首页 > 解决方案 > php, mcrypt_generic 到 openssl_encrypt 通过 MCRYPT_MODE_ECB 转换

问题描述

由于不推荐使用 Mcrypt,我想在我的代码中使用 OpenSSL

        $key = md5($tenant, true);
        $iv_length = mcrypt_get_iv_size(self::$algorithm, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_length, MCRYPT_DEV_URANDOM);//MCRYPT_RAND
        //$encrypted = mcrypt_encrypt(self::$algorithm, $key, $data, MCRYPT_MODE_ECB);
        $td = mcrypt_module_open(self::$algorithm, '', MCRYPT_MODE_ECB, '');
        mcrypt_generic_init($td, $key, $iv);
        $encrypted = mcrypt_generic($td, $data);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $result = hash('crc32', base64_encode($encrypted));
        return $result;

我不知道如何将 mcrypt_generic 转换为 openssl_encrypt ,谢谢!

标签: php

解决方案


请使用以下代码进行 ECB 加密和解密。

$encryptedValue = base64_encode(openssl_encrypt($value,'AES-256-ECB',$key,OPENSSL_RAW_DATA));
  
$decryptedValue = openssl_decrypt(base64_decode($encryptedValue),'AES-256-ECB',$key,OPENSSL_RAW_DATA);

推荐阅读