嘿,我真的需要一些指导。
ATM。我正在使用这种加密/解密方法来处理常规字符串。
{{1}}
但经过一些可能不是最安全的研究?数据存储在MYSQL数据库中。
我无权安装自定义php插件到网络服务器。那么有没有其他安全的方法来做到这一点?
我应该如何生成/存储我的加密密钥?
这不用于密码等。
答案 0 :(得分:2)
但经过一些可能不是最安全的研究之后呢?
你以某种方式设法击中了不安全代码的神圣三位一体:
图书馆:使用一个有很多错误的废弃图书馆(mcrypt)。可以使用OpenSSL,但它仍然是安全使用它的挑战。 defuse/php-encryption是一个更好的选择。
分组密码:使用Blowfish甚至其创建者说它不安全。 AES(= Rijndael-128)是一个更好的选择,但在使用好的库时,你不应该担心这个问题(见1)。
分组密码操作模式:使用ECB模式几乎在所有情况下都是不安全的(scroll down to the penguin)。通常,需要像CBC这样的随机模式,但在使用好的库时,这不是你应该担心的问题(见1)。
这适用于安全传输数据(然后是一些)。如果您需要根据加密列在数据库中查找内容,那么您需要考虑添加哈希列或真正使用ECB模式。
我应该如何生成/存储我的加密密钥?
键通常是简单的字节数组。某些密码(如DES)具有弱密钥,您需要检查并生成另一个密码。一个好的库通常会为您提供生成密钥的API。
存储密钥是一个备受争议的问题。考虑加密一些数据的有用性,其中密钥存储在接近加密数据的位置。毕竟,您通常需要经常访问和解密该数据。对此没有好的解决方案。如果将加密密钥存储在除数据之外的其他计算机上,则可能会出现其他错误并使您的网络易受攻击的可能性。