0

私はPHPでの暗号化にまったく慣れていません。次の返された暗号化から出力を復号化するにはどうすればよいですか?

$key = "123456";
$text = "hello";
$cipher_alg = MCRYPT_RIJNDAEL_128;

$encrypted_body = mcrypt_encrypt($cipher_alg, $key, $text , MCRYPT_MODE_CBC, $iv);
$encrypted_body_hex = bin2hex($encrypted_body);
$encrypted_body_hex = strtoupper($encrypted_body_hex);

逆方向に作業すれば大丈夫だと思いました(strtolower、hex2bin、mcrypt_decryptを介してフィードします)が、運がありません。

私のバージョンのPHPではhex2binがサポートされていないため、bin2hexで迷子になっていると思います。

どんな助けでも素晴らしいでしょう。

前もって感謝します

4

1 に答える 1

0

私はそれをテストしたところ、あなたが推測したように逆方向に動作します。そこに驚きはありません。

$decrypted_hex = strtolower($encrypted_body_hex);
$decrypted_hex = hex2bin($decrypted_hex);
$text_decrypted = mcrypt_decrypt($cipher_alg, $key, $decrypted_hex, MCRYPT_MODE_CBC, $iv); 

$text_decrypted次に「こんにちは」が含まれます。

おそらく、復号化フェーズで暗号化に使用したのと同じ初期化ベクトルを含めていませんか?

を使用して作成し$iv = mcrypt_create_iv(16);、復号化に再利用しないと機能しません。

編集:

PHP <= 5.4 を使用する必要がある場合は、このhex2bin 置換を使用してください。

于 2013-08-13T10:07:05.803 に答える