PHPのmcrypt関数に苦労しています。私はこれまで使用したことがなく、テストサーバー(WAMP PHP 5.4.3)では正常に動作していますが、運用サーバー(LAMP PHP 5.2.17)ではランダムに失敗します。復号化機能を実行すると、次のようなランダムな(バイナリ?)文字が表示されます:n��/�=�C_����+`�n{'a��6�Xh��fEe41Omk7DjQ6/n6leoTg==。
以下は、暗号化および復号化機能です。これらは私が使用しているナンスクラスからのものです。
私が試したこと:
- 両方の関数からIV引数を削除します
- 暗号化関数でIVを作成し、クラスプロパティに格納してから、そのプロパティを復号化関数で使用します
- ここで説明するように、暗号化された出力にIVを保存します。
他に何かしようとすべきことはありますか?
private function fnEncrypt($sValue)
{
return trim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
hash($this->hash, $this->secret, true), $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
)
)
);
}
private function fnDecrypt($sValue)
{
return trim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
hash($this->hash, $this->secret, true),
base64_decode($sValue),
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
)
);
}