【发布时间】:2020-11-21 10:12:28
【问题描述】:
我正在尝试将使用 mcrypt 的现有加密功能更改为 OpenSSL。但它会创建不同的加密字符串。我们该如何解决这个问题?
<?php
$str = 'test';
$method = 'AES-128-CBC';
$key = 'o6xSYYAVl2eapPI2';
$iv = 'fedcba9876543210';
function encrypt_mcrypt($str=NULL,$key,$iv) {
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', $iv);
mcrypt_generic_init($td,$key,$iv);
$encrypted = mcrypt_generic(@$td,@$str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return bin2hex(@$encrypted);
}
function encrypt_openssl($str=NULL,$key,$iv) {
$encrypted =openssl_encrypt($str, 'AES-256-CBC', $key, OPENSSL_RAW_DATA,$iv);
return bin2hex(@$encrypted);
}
echo 'Mcrypt:'.encrypt_openssl($str,$key,$iv);
echo '<br/>';
echo 'Openssl:'.encrypt_mcrypt($str,$key,$iv);
输出
Mcrypt:0ab40f383b421ba465c0cbbcded97319
Openssl:57c86f3089535b3acfbe65cecbb662b9
【问题讨论】: