首页 > 解决方案 > php 从 mcrypt 到 openssl

问题描述

从今天开始,我在我的网站上使用 mcrypt 来加密用户的电子邮件地址。php mcrypt 模块在我的最后一台服务器上安装了 php 7.4,因此没有任何问题。由于我需要更改托管公司,他们不会在他们的服务器上为我提供 mcrypt 安装。所以我需要更改 php 7.4 支持的功能。如果发生 sql 注入,出于安全原因,我有这个功能来加密我的用户电子邮件地址。

function encrypt_128($string){
    $string = rtrim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_ECB)));
    return $string;

我已经用这个函数替换了,但它没有返回相同的输出。

function encrypt_128($string){

    return rtrim(base64_encode(openssl_encrypt($string, 'aes-256-ecb', $key, OPENSSL_RAW_DATA)));

我读过 mcrypt 不使用填充,我尝试添加OPENSSL_ZERO_PADDING但它不能再加密用户的电子邮件地址,并且不返回任何输出。我需要该函数来产生相同的输出,因为新用户可以使用与旧用户相同的电子邮件地址进行注册。

标签: phpopensslmcrypt

解决方案


事实证明,这不是一种使这成为可能的方法,我只是解密了所有数据并用新算法重新加密它们。这花了很长时间,但这是一个必要的改变。如果有人知道如何随时发布答案。


推荐阅读