我正在尝试使用 mcrypt 在我的数据库中存储密码。首先,它有效,但仅在某些时候有效。
这是我的加密代码:
//Encryption/Decryption key
$key = $username.$username.$username.$username.$username;
//Encryption Algorithm
$cipher_alg = MCRYPT_RIJNDAEL_256;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg, MCRYPT_MODE_ECB), MCRYPT_RAND);
$password = mcrypt_encrypt($cipher_alg, $key, $pass1, MCRYPT_MODE_CBC, $iv);
然后将 $username、$iv 和 $password 上传到 MySQL 数据库。
这是我的解密代码:
//Encryption/Decryption key
$key = $username.$username.$username.$username.$username;
//Encryption Algorithm
$cipher_alg = MCRYPT_RIJNDAEL_256;
$dbpass = mcrypt_decrypt($cipher_alg, $key, $encpass, MCRYPT_MODE_CBC, $random);
$dbpass = trim($dbpass); // Trim the fat
从数据库中检索 $username、$iv 和 $encpass(加密密码),并使用用户名重新创建密钥。
这有效,但仅在某些时候有效。我不知道为什么。我唯一的假设是数据库不能接受加密产生的某些字符,例如引号。
任何帮助将不胜感激!