1
私の暗号化をmcryptからopensslに移行しようとしましたが、復号化に失敗します。以下のコードは自分の暗号化機能を示しています。私はvar_dumpを暗号化関数に置き、同じ変数を使って復号化を検証しましたが、そうではありません。openssl_decryptは常にfalseを返します
は、私は、コードに次の変更を試みたが、何も働いていない:
-
だけ
- に設定されたオプションを持つすべてのこれらの変異体の好奇心
base64_encode($encrypted)
のうち base64_decode($encrypted)
- :0(デフォルト値)、OPENSSL_RAW_DATA、
OPENSSL_ZERO_PADDING 210
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日はなぜfalseを返すopenssl_decrypt続けますか?私は正常に上の行と同じ変数で暗号化に成功しました。
認証タグのバグがあるため、これはPHP 7.1までは動作しません。 –
と思われます。 GCM暗号は正しく機能しません。 – Us3r
このシナリオでは7.1を使用していますが、すべてのシナリオでfalseが返されます。 – Dockstar