ただし、PEAR::Crypt_Blowfish を使用すれば Blowfish アルゴリズムによる可逆暗号化を行うことができるようです。
PEAR::Crypt_Blowfish は、パッケージがインストールされていない場合はインストールし、
C:\xampp\php>pear install Crypt_Blowfish downloading Crypt_Blowfish-1.0.1.tgz ... Starting to download Crypt_Blowfish-1.0.1.tgz (11,954 bytes) .....done: 11,954 bytes install ok: channel://pear.php.net/Crypt_Blowfish-1.0.1 C:\xampp\php>あとはインクルードするだけで使用することができます。
例えば、暗号化は以下のように行います。
function encrypt ( $str ) { require_once 'Crypt/Blowfish.php'; $key = 'himitsu'; $crypt = new Crypt_Blowfish( $key ); return bin2hex( $crypt->encrypt( $str ) ); }※リクエストパラメータや hidden 項目に埋め込めるよう、bin2hex() 関数を使用して暗号化した文字列を 16 進変換して返しています。
上記の方法で暗号化した文字列の復号化は以下のように行います。
function decrypt ( $str ) { require_once 'Crypt/Blowfish.php'; $key = 'himitsu'; $crypt = new Crypt_Blowfish( $key ); return rtrim($crypt->decrypt( pack( "H*", $str ) ) ); }※16進変換された暗号化文字列を pack() 関数で元に戻した上で復号化しています。
※復号化した文字列が 8 で割って端数の出るバイト数の場合、後ろにその端数を調整するための余分な x00 が付くため、rtrim() 関数で余分な x00 を除去しています。