[PHP-users 35580] Re: mcrypt_decrypt() が正しく複合化できない

youo hoko yoko00068 @ yahoo.co.jp
2011年 5月 27日 (金) 12:01:51 JST


星野です

分かったかもです

http://www.ipa.go.jp/security/rfc/RFC3602JA.html#2.4
> AES は、16 オクテット(128 ビット)のブロックサイズを使用する。

# php -r "echo mcrypt_get_block_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);"
32

ブロックサイズが256ビットになっちゃってますね

さて、報告ですがわたしこの手の報告をしたことが無く、英語もさっぱり。
翻訳機でがんばってみようかな、、、

どなたか報告していただけるとありがたいです


--- php-users @ itcom.jp  wrote:
> おく@Workgroupです。
> 
> 
> > $key = '12345678901234567890123456789012' ;
> > にしても mcrypt_decrypt() は変なバイナリを返すのです
> 
> なぜか、rijndael-128 で復号できますね・・
> 
> $mcrypt_data   = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
> $data_enc, MCRYPT_MODE_ECB), "\x00\x05\x08");
> 
> mcrypt_encrypt で、rijndael-256 したものは、
> rijndael-256 で mcrypt_decrypt できるようです。
> 
> encrypt の結果が、openssl と、mcrypt で長さから違うので、
> どちらかがおかしいようですね。
> 
> 
> 
> 2011年5月26日19:15  <hoshino @ digiadv.co.jp>:
> > 星野です
> >
> > おく@Workgroup様 ご指摘ありがとうございます。
> >
> > しまった、鍵長が256bitが使えるからAES256なのでした。
> > サンプルコードを作っているときに短くしてしまいました。
> > 恥ずかしい、、、
> >
> > $key = '12345678901234567890123456789012' ;
> > にしても mcrypt_decrypt() は変なバイナリを返すのです
> >
> > バイナリをbin2hexで表示してみました。
> > ---
> > <?php
> >   $key = '12345678901234567890123456789012' ;
> >   $data = 'abcd1234' ;
> >   $data_enc = openssl_encrypt($data,'aes-256-ecb',$key,TRUE) ;
> >
> >   $openssl_data  = openssl_decrypt($data_enc,'aes-256-ecb',$key,TRUE) ;
> >   $mcrypt_data   = mcrypt_decrypt('rijndael-256',$key,$data_enc,'ecb') ;
> >
> >   echo $openssl_data ,"\n" ;
> >   echo bin2hex($openssl_data) ,"\n" ;
> >   echo bin2hex($mcrypt_data) ,"\n" ;
> > ?>
> > ---
> > 結果
> >>
> >> abcd1234
> >> 6162636431323334
> >> 242a2e7c099eb918aa51b768442db1ffb90639e68c71eb82261dff762f7a1235
> >
>


PHP-users メーリングリストの案内