私は暗号化に不慣れです。AES128ビット暗号化で文字列をエンコードしたい。私はPHPでこれを行うことができます:
$key = 'Hello';
$plain = 'Hello Hello Hello Hello';
$cipher = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plain, MCRYPT_MODE_CBC);
echo base64_encode($cipher);
これは以下を出力します:
bzXdTNochlsQwpR9hzSSS6ihG+MYIZIDZZlF85pIXlQ=
私はopensslコマンドラインで同じことを試しました:
openssl enc -aes-128-cbc -a -nosalt -in plain.txt -out encrypted.enc -pass pass:Hello
そして、encrypted.encに保存される文字列は次のとおりです。
5apwiN8MdAuJ9nEW82XMyR0H3VKpI/vWc7xV2iVjCTE=
なぜ違うのですか?
PHPとコマンドラインopensslの両方で同じ出力を取得しようとしている理由は、2つの別々のWebサービスが相互に通信するためです。1つのサービスではPHPを使用できるので、それを使用できますが、もう1つのサービスではPHPを使用しないため、コマンドラインでopensslを使用する必要があります。