嘗試這個(gè):
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;
在PHP程式碼中,金鑰必須進(jìn)行Base64 解碼,而不是Base64編碼:
$key = base64_decode("GSTEGSTEjdfheyhdHSHSHSHDHHDHmdjjdn12ndndn5r=");
透過(guò)這個(gè)改變,所需的密文被創(chuàng)建出來(lái)。
請(qǐng)注意,如果在openssl_encrypt()
呼叫的第四個(gè)參數(shù)傳遞0
而不是OPENSSL_RAW_DATA
,則密文字預(yù)設(shè)會(huì)進(jìn)行Base64編碼。因此,明確對(duì)密文進(jìn)行Base64編碼是不必要的。
請(qǐng)記住,靜態(tài)IV是不安全的。通常在加密過(guò)程中,會(huì)產(chǎn)生一個(gè)隨機(jī)的IV,並將其與密文一起傳遞給解密方(通常是拼接在一起)。