我正嘗試使用mcrypt在我的數據庫上存儲密碼。首先,它起作用,但只有一些時間。使用mcrypt,PHP和MySQL進行加密
這裏是我的加密代碼:
//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);
這則上傳$的用戶名,在$ IV和$密碼到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
的$用戶名,$ IV,和$ encpass(加密的密碼)從數據庫中檢索和密鑰使用的用戶名重建。
這工作,但只有時。我無法弄清楚爲什麼。我唯一的假設是數據庫不能接受加密產生的一些字符,例如引號。
任何幫助將不勝感激!
請告訴我們您使用的數據插入到數據庫中的代碼,以及用於檢索它的代碼。我們還需要知道表格的結構。另外,你爲什麼在ECB模式下獲取IV,但在CBC模式下進行加密? – Charles 2011-04-22 17:05:20
據我所知算法取決於密鑰和IV大小和用戶名是不可接受的既不是通過/也不是關鍵..你不能依靠用戶輸入! – 2013-02-06 22:25:34