1
我試圖將我的加密從mcrypt遷移到openssl,但解密仍然失敗。代碼下面顯示了我的加密功能。我將var_dump放置在加密函數中,以驗證解密是否使用了相同的變量,但事實並非如此。openssl_decrypt總是返回false
我嘗試了以下修改代碼,無工作:
base64_decode($encrypted)
- 只是出於好奇
base64_encode($encrypted)
- 與選項所有這些變體設置爲:0(默認值),OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING
function encryptString($data){
$key = "1A534";
do{
$iv = random_bytes(100);
}while(strpos($iv,"|Z|")!==false);
$encrypted = openssl_encrypt($data,"aes-256-gcm",$key,false,$iv);
var_dump(openssl_decrypt($encrypted,"aes-256-gcm",$key,OPENSSL_RAW_DATA,$iv));
$output = $iv . "|Z|" . $encrypted;
$output = base64_encode($output);
return $output;
}
PHP版本爲7.0.5-1 + deb.sury.org〜可信賴+ 1
OpenSSL的版本是OpenSSL的1.0.2g 2016年3月1日
爲什麼保持openssl_decrypt返回false?我用上面的行成功加密了相同的變量。
我認爲這將不會工作,直到PHP 7.1,因爲有認證標籤的錯誤。 –
看起來沒錯。無GCM密碼正常工作。 – Us3r
我在這種情況下使用7.1,但仍然在所有情況下返回false。 – Dockstar