【问题标题】:encryption or Cryptography for store sensitive data用于存储敏感数据的加密或密码术
【发布时间】:2019-11-05 17:17:00
【问题描述】:

我进行了一些搜索以找出在数据库中存储敏感数据的最佳方式是什么? 对于一个项目,我需要将加密货币钱包的密钥存储在数据库中,不咨询就做这个工作太冒险了。

我尝试使用钠,可能会使用多种加密方法,但我不知道什么是最好和最安全的方法

$secret = 'xxxxx';

$key   = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);

// Encrypt
$ciphertext = sodium_crypto_secretbox($msg, $nonce, $key);
// Decrypt
$plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);

如果您有密码学和加密数据方面的经验,请指导我。

附加信息

我在这个项目中使用 PHP 7.3 和 laravel,我想为加密货币钱包的任何人创建一个包,我的这些信息对你有好处,你可以更好地帮助我

【问题讨论】:

    标签: php security encryption


    【解决方案1】:

    你需要了解加密是如何工作的,实际上,有两种类型的密码学

    1. 对称密码学
    2. 非对称加密(公钥)

    请在此处查看:http://books.gigatux.nl/mirror/securitytools/ddu/ch09lev1sec1.html

    根据您的代码,您使用的是使用共享密钥的对称密码术。 由于您使用的是 laravel,因此您可以将 Secret Key 存储在 ENV 中,请务必关闭调试。由于您使用的是laravel,因此可以使用此处找到的内置加密/解密方法:https://laravel.com/docs/5.7/encryption

    Laravel 内置加密使用 OpenSSL 提供 AES-256 和 AES-128 加密,并且 Laravel 的所有加密值都使用消息验证码 (MAC) 进行签名,因此它们的基础值一旦加密就无法修改。

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2012-08-11
      • 2011-01-19
      • 2012-07-12
      • 2013-04-01
      相关资源
      最近更新 更多