PHP の暗号化/復号化で奇妙な問題に遭遇しました。以下のコードを見てください。
<?php
function encrypt($encrypt, $mc_key, $iv)
{
$passcrypt = trim(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($encrypt), MCRYPT_MODE_ECB, $iv));
$encode = base64_encode($passcrypt);
return $encode;
}
function decrypt($decrypt, $mc_key, $iv)
{
$decoded = base64_decode($decrypt);
$decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $mc_key, trim($decoded), MCRYPT_MODE_ECB, $iv));
return $decrypted;
}
$key = 'SAtFIAI2g_r=supL43QkO#dTQYjS0JCt';
$iv = '#CvmQT1TlpINQgnc4q%9$k8mt170MXll';
$message = 'AAABzefYdjTYBAFLNMHfLHJZCtAkTKm';
$encrypted = encrypt($message, $key, $iv);
echo $encrypted."\n";
$decrypted = decrypt($encrypted, $key, $iv);
echo $decrypted."\n";
?>
$key、$iv を持っており、これを使用して $message をエンコードします。したがって、2行目は復号化されたメッセージになるはずです。しかし、そうではありません。出力を参照してください。
MXk9zteonXhz2zPVK7o4oUJJuXXQRlwOzTO7JbqbsA==
tq֞u�4�&�
1P&���_pŬ�.��
_
ただし、$message を少し変更すると、問題なく動作します。元。$message が次の場合: AAABzefYdjTYBAFLNMHfLHJZCtAkTKn 出力は次のとおりです。
fAEeJAkluHht8l6ain99YMAMHJtiUAg47XsJBECdrLA=
AAABzefYdjTYBAFLNMHfLHJZCtAkTKn
解決策を見つけるための助けをいただければ幸いです。