MCRYPT_BLOWFISHでの暗号化/復号化の結果が PHP4.4.4 と PHP5.3.3 で異なる
PHP4.4.4(mcrypt 2.2.x) 上で構築されたWEBシステムがあるのですが、
今現在それをPHP5.3.3(mcrypt 2.5.8)に移行しようと思っています。
下のようにmcrypt_ecb()関数を使って正しく "my_data" という文字に
復号化するプログラムがあります。
$my_data = "xfZ3ruQZ+Is=";
// "xfZ3ruQZ+Is="という文字はPHP4.4.4上で
// base64_encode(mcrypt_ecb(MCRYPT_BLOWFISH,"my_key","my_data",MCRYPT_ENCRYPT))
// で暗号化された文字列です。
$my_key = "my_key";
$my_data = base64_decode($my_data);
$c_data = mcrypt_ecb(MCRYPT_BLOWFISH,$my_key,$my_data,MCRYPT_DECRYPT);
echo $c_data;
上記のコードですがPHP5.3.3 (mcrypt 2.5.8)だと"Dz}「ツ鞅"という全く異なる文字列となってしまいます。
いろいろ試してみるとPHP4.4.4上で暗号化された文字列がPHP5.3.3で復号できなくて困っております。
(実際は、暗号化された文字列はデータベースに格納されています。)
どうにかして、"xfZ3ruQZ+Is=" という暗号化された文字列をPHP5.3.3でも正しく"my_data"に復号する方法はありませんでしょうか?
mcrypt_ecb()が廃止される関数であることは承知しておりますが、レガシーシステムなのでそれは承知の上でこの関数を使っております。
実際の環境では、PHP4.4.4でmcrypt_ecb(MCRYPT_BLOWFISH,...)関数で暗号化された文字列がOracleデータベース上に格納されておりまして、これらのデータを新しいPHP5.3.3の環境で復号化したいのです。膨大なデータなので移行データを整備することは避けて既存のデータをそのまま復号化したいと考えています。
どなたかお助けください。