我使用兩個簡單的函數來加密和解密密碼。但解密功能並不正確。這裏是我的輸出:Mcrypt解密不工作 - PHP
加密:\#%\> 3,OSDC
解密:test123
,這裏是我的代碼:
$size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
function encrypt($data)
{
$key = 'test';
$encrypted_data = mcrypt_cbc(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_ENCRYPT, $iv);
return $encrypted_data;
}
function decrypt($encryptedData)
{
$key = 'test';
$decrypt = mcrypt_cbc(MCRYPT_RIJNDAEL_256, $key, $encryptedData, MCRYPT_DECRYPT, $iv);
return $decrypt;
}
$password = encrypt($member[0]['PASSWORD']);
print('Encrypted: '.$password.'<br />');
$password = decrypt($password);
print('Decrypted: '.$password);
考慮使用[驗證碼](http://stackoverflow.com/questions/2448256/php- mcrypt-encrypting-decrypting-file/2448441#2448441)。這絕對是作品。 –
這裏有幾個錯誤;您將字符串或密碼視爲鍵,您使用的Rijndael 256與* 256不相同,最後您沒有明確定義明文的字符編碼。這顯然不包括我的答案中的IV問題。 –
不幸的是,你必須欺騙mcrypt進入AES-256。就像使你的密碼「MCRYPT_RIJNDAEL_128」一樣,但給它一個256位的密鑰。在PHP中字符編碼也不容易控制,我不這麼認爲。儘管密碼的東西完全正確。 –