在本地开发的时候,使用的是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($data, self::$cipher, self::$key, 0, self::$iv));
}
public static function ecbDecrypt($encrypted)
{
return openssl_decrypt(base64_decode($encrypted), self::$cipher, self::$key, 0, self::$iv);
}
将key和iv需要设置成16个字符的密钥,我这里根据实际情况,只需要简单加密,所以key和iv可以设置成一个固定的16个字符密钥。如果需要动态生成不同的加密字符,可以设置动态的iv,例如下面这样写:$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-128-cbc'));