Pear::Crypt_Blowfishで暗号化・復号化するときの留意点
Pear::Crypt_Blowfishの概要は以下のサイトが参考になる。
http://www.phppro.jp/phptips/archives/vol17/3
Mcrypt暗号化関数がコンパイル時に有効になっている場合はそちらを使用し、Mcrypt暗号化関数を使用できない場合はPHPでの実装が自動的に使用されます。
Mcryptがインストールされていない環境でも使用できるので、便利そうだ。
Pear::Crypt_Blowfishで暗号化した場合、開発環境(Windows)と本番環境(Linux)で、結果が異なる現象が出た。
調べてみたところ、古いバージョンのCrypt_Blowfishだと、そういうバグがあるらしい。
[参考サイト]
http://q.hatena.ne.jp/mobile/1150003912
http://kosugi-tomo.vox.com/library/post/crypt_blowfish-on-php45.html
で、
pear install Crypt_Blowfish-1.1.0RC1
で、新しいバージョンをインストール。
するとローカルの開発環境(WindowsのXAMPP)の方で「Cannot redeclare class Crypt_Blowfish」のエラーが出てしまう。XAMPPにデフォルトでインストールされているPEARのCrypt_Blowfishとクラス名が衝突していることが原因のようだ。
デフォルトでインストールされている方の名前を変更して、この現象を回避。
で、開発環境(Windows)と本番環境(Linux)で同じ暗号化に成功。
ところが、今度は複合化の際に正しい文字列の後に「���」と文字化けした文字が付与されてしまう。
で再度調べてみたところ、復号したデータの最後に連続している「」を削除する処理が必要らしい。
[参考サイト]
http://d.hatena.ne.jp/shimooka/20071108/1194449912
上記のサイトを参考にして記述したところ、正常に動作した。