2011年5月26日

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

星野と申します

mcrypt以外(openssl_*系関数等)でAES256 ECBで暗号化したデータを
PHPの mcrypt_*系関数で復号出来ないようです。

サンプルコード
---
<?php

$key = 'secret key' ;
$data = 'abcd1234' ;
$data_enc = openssl_encrypt($data,'aes-256-ecb',$key,TRUE) ;

echo "openssl:" , openssl_decrypt($data_enc,'aes-256-ecb',$key,TRUE),"\n" ;
echo "mcrypt :" , mcrypt_decrypt('rijndael-256',$key,$data_enc,'ecb') ,"\n" ;
?>
---
結果
> openssl:abcd1234
> mcrypt :[バイナリになってしまい表示不能]

openssl_decrypt()とmcrypt_decrypt()の結果が違ってしまってます。

その他試したこと

・PHPのmcryptで暗号化したものはPHPのmcryptで復号できる
・PHPのopensslで暗号化したものはPerlのCrypt::Rijndaelで復号できる
・PerlのCrypt::Rijndaelで暗号化したものはPHPのmcryptで復号できない
・mcrypt_module_open() から使っても同じ結果です

PHPのmcryptがおかしいように思います
というかlibmcryptがおかしいということでしょうか

PHPのPKCS#5パディングがjava等と違うという問題もあるようですが、
パディング除去は複合化後の処理なので、関係ないと思います。

環境
# php -v
> PHP 5.3.0 (cli) (built: Nov 2 2009 05:23:58)
> Copyright (c) 1997-2009 The PHP Group
> Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

# uname -a
> Linux web2 2.6.18-164.6.1.el5 #1 SMP Tue Nov 3 16:12:36 EST 2009 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/issue | head -1
> CentOS release 5.4 (Final)

# rpm -qa | grep mcrypt
> libmcrypt-2.5.8-4.el5.centos
> libmcrypt-devel-2.5.8-4.el5.centos
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2011年5月26日 17:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/104073
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。