我是加密新手。我想用 AES 128 位加密对字符串进行编码。我可以在 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 获得相同输出的原因是因为我将有两个单独的 Web 服务一起通信。一项服务将提供 PHP,因此我可以使用它,但另一项服务将不使用 PHP,因此我可能不得不在命令行中使用 openssl。