PHP字符串加密/解密,我做错了吗?
嘿,我真的需要一些指导 自动取款机。我对常规字符串使用这种加密/解密方法PHP字符串加密/解密,我做错了吗?,php,mysql,encryption,web-hosting,blowfish,Php,Mysql,Encryption,Web Hosting,Blowfish,嘿,我真的需要一些指导 自动取款机。我对常规字符串使用这种加密/解密方法 function encrypt($pure_string) { $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, "!@#
function encrypt($pure_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
return $encrypted_string;
}
function decrypt($encrypted_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", $encrypted_string, MCRYPT_MODE_ECB, $iv);
return $decrypted_string;
}
但经过一些研究,这可能不是最安全的方法?数据存储在MYSQL数据库中
我没有权限在Web服务器上安装定制的php插件。那么有没有其他安全的方法可以做到这一点
我应该如何生成/存储我的加密密钥
这不用于密码等
但经过一些研究,这可能不是最安全的方法
您不知何故成功地实现了不安全代码的神圣三位一体:
存储密钥是一个争论不休的问题。考虑一下加密某些数据的有用性,其中密钥存储在加密数据附近。毕竟,您通常需要经常访问和解密这些数据。这方面没有好的解决办法。如果将加密密钥存储在数据以外的另一台计算机上,更高的可能性是您出现其他错误并使您的网络易受攻击。问题不清楚,因为您没有解释为什么需要以加密方式存储数据,以及为什么您认为上述方法不够安全。ECB实际上没有使用初始化向量(算法不会对每个块产生扰动)。至少使用CBC。否则,这基本上只是一个预共享密钥——充其量只是轻微安全的,对存储在磁盘上的不太敏感的内容进行加扰也可以。没有什么东西是真正安全的,但是使用bcrypt来派生密钥和使用AES-256-CBC之类的东西会更好一些。您不应该加密和解密密码,而应该将密码散列并将散列后的密码存储在数据库中,当用户输入密码时,以同样的方式散列密码,并用数据库的散列密码检查用户的散列密码。我认为您最好尽可能保护您的服务器和应用程序。@Tschallacka您可能是对的:)问题不清楚,因为您没有解释为什么需要以加密方式存储数据以及为什么您相信上面的方法不够安全。ECB实际上没有使用初始化向量(算法不会对每个块产生扰动)。至少使用CBC。否则,这基本上只是一个预共享密钥——充其量只是轻微安全的,对存储在磁盘上的不太敏感的内容进行加扰也可以。没有什么东西是真正安全的,但是使用bcrypt来派生密钥和使用AES-256-CBC之类的东西会更好一些。您不应该加密和解密密码,而应该将密码散列并将散列后的密码存储在数据库中,当用户输入密码时,以同样的方式散列密码,并用数据库的散列密码检查用户的散列密码。我认为您最好尽可能保护您的服务器和应用程序。@Tschallacka您可能是对的:)