P粉6680193392023-09-01 16:26:36
尝试这个:
function encryptData($data, $key, $iv) { $cipher = "aes-256-cbc"; $options = OPENSSL_RAW_DATA; $encrypted = openssl_encrypt($data, $cipher, $key, $options, $iv); $encrypted = base64_encode($encrypted); return $encrypted; } $message = "消息"; $key = "我的秘密密钥"; $iv = "我的iv"; $encrypted = encryptData($message, $key, $iv); echo $encrypted;
P粉6396675042023-09-01 15:35:49
在PHP代码中,密钥必须进行Base64 解码,而不是Base64编码:
$key = base64_decode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r=");
通过这个改变,所需的密文被创建出来。
请注意,如果在openssl_encrypt()
调用的第四个参数中传递0
而不是OPENSSL_RAW_DATA
,则密文默认会进行Base64编码。因此,明确对密文进行Base64编码是不必要的。
请记住,静态IV是不安全的。通常在加密过程中,会生成一个随机的IV,并将其与密文一起传递给解密方(通常是拼接在一起)。