欢迎访问永胜空间,好运加身,财源广进不是梦

openssl_encrypt中的加密问题

  • 工作心得 @ 2024-12-23
  • 作者:顾永胜
  • 来源:0513.city

在本地开发的时候,使用的是php8.0.9版本,openssl_encrypt加密方式使用的是DES-ECB,本地测试没有问题。
但是将程序上传到服务器上的时候出现了问题,openssl_encrypt没有反回值,服务器上使用的是php8.3.2版本,我首先检查了下openssl扩展没有问题,然后在互联网上查找资料。终于看到一句,高版本的已经不支持DES-ECB加密码模式了。
经过一顿琢磨,我使用了aes-128-cbc加密模式。

    public static function ecbEncrypt($data)
    {
        return base64_encode(openssl_encrypt($dataself::$cipherself::$key0self::$iv));
    }

    public static function ecbDecrypt($encrypted)
    {
        return openssl_decrypt(base64_decode($encrypted), self::$cipherself::$key0self::$iv);
    }

将key和iv需要设置成16个字符的密钥,我这里根据实际情况,只需要简单加密,所以key和iv可以设置成一个固定的16个字符密钥。如果需要动态生成不同的加密字符,可以设置动态的iv,例如下面这样写:$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc'));