0

カウンター モードで AES で暗号化された文字列がありますが、PHP では行われておらず、mcrypt でデコードできません :( 期待どおりに動作するクラスがあります: http://www.movable-type.co. uk/scripts/aes.html(ページ下部参照)ですが、遅いのでmcryptで解読したいと思います。

クラスdecryptメソッドに従って、私は次のことを行いました:

 $key = $_POST['key'];

 $length = strlen($key);
 if($length > 32)
   $key = substr($key, 0, 32);

 $cyphered = base64_decode($_POST['cyphered']);
 /// make initialization vector with first 8 bytes treated as integers
 $f8b = array_map('ord', str_split(substr($cyphered, 0, 8)));
 array_unshift($f8b, 'I8');
 $iv = call_user_func_array('pack', $f8b);

 print mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, substr($cyphered, 8), 'ctr', $iv);

結果は出力のガベージです:(私は何が間違っているのか理解できません。誰かがこの問題に光を当てることができますか?

4

1 に答える 1

0

phpseclib の純粋な PHP AES 実装は、可動型の AES 実装のほぼ 4 倍高速です。

http://phpseclib.sourceforge.net/crypt/examples.html

そして、それは mcrypt が利用できないときです。mcrypt が利用可能になると、それが使用され、さらに高速になります。

そうは言っても、どうしても mcrypt を使いたければ... MCRYPT_RIJNDAEL_128 を試してみてください。MCRYPT_RIJNDAEL_256 のブロック サイズは 256 ビットで、Rijndael (Rijndael のブロック サイズは可変) では機能しますが、AES では機能しません。

于 2012-10-09T12:07:35.157 に答える