openssl_encrypt 替换 mcrypt_encrypt 加密方式对应搜集、寻找匹配方法

原创 PHP技巧
阅读数: 1585 2019年01月21日

openssl_encrypt 替换 mcrypt_encrypt 加密方式对应搜集、寻找匹配方法

由于 php7.1+ 弃用了 mcrypt_encrypt(),必须使用 openssl_encrypt() 来替换。
但是之前使用的是 mcrypt_encrypt(MCRYPT_DES, $k) MCRYPT_DES 加密方式,且与 openssl_encrypt 加密方式名称又不一致。
如何找到 openssl_encrypt 对应的加密方式?

用程序一个一个试了:

$fs = openssl_get_cipher_methods(); //获得所有的加密方式
foreach($fs as $v){
    try{
        $data = openssl_encrypt($encrypt, $v, $key, OPENSSL_RAW_DATA);
        $str = base64_encode($data);

        if($str == 'BmYqODaiBvM='){ //如果加密后与老的密文一致,按就对了。
            echo 'ok:'.$v.';';
            die;
        }
    }catch (\ErrorException $e){ //报错的大部分是 iv 不能空,捕捉异常,保证循环正常

    }
}
echo 'no'; die; //如果都没匹配到,那就真没有。不想看到这个。

结果输出:
ok:DES-ECB;


说明:mcrypt_encrypt 的 MCRYPT_DES  对应 openssl_encrypt 的 DES-ECB;
根据这个思路,下次有空,做一个验证工具出来。

phpriji.cn | 网站地图 | 沪ICP备17015433号-1