php - 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 ,谢谢!
解决方案
请使用以下代码进行 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);
推荐阅读
- laravel - Laravel Livewire 魔术动作不起作用
- python - 建立模型的一般方法
- flutter - 如何在颤动中获得白色状态栏颜色和黑色图标
- reactjs - 在 React 中何时使用花括号以及何时使用角度
- python - 使用 django CreateView 更新 onetoone
- bash - crontab 和 bash 脚本
- android - 使用 ExecutorService 的 awaitTermination 方法时如何显示进度条?
- flutter - 在颤动中隐藏本地下载的视频或仅在应用程序中访问
- winapi - Windows 消息标识符 0x0108 (WM_YOMICHAR)
- sql - Oracle SQL 行到具有分组依据和总和的列