函式名稱:openssl_decrypt()
函式描述:openssl_decrypt() 函式用於對使用 OpenSSL 加密的資料進行解密。
適用版本:該函式適用於 PHP 5 >= 5.3.0, PHP 7, PHP 8
用法: openssl_decrypt(string $data, string $method, string $password, int $options = 0, string $iv = "", string $tag = "", string $aad = "")
引數:
- $data:要解密的資料,通常是使用 openssl_encrypt() 函式加密後的資料。
- $method:指定加密演算法,可以是以下之一:
- "AES-128-CBC":128 位 AES 加密演算法,使用 CBC 模式。
- "AES-192-CBC":192 位 AES 加密演算法,使用 CBC 模式。
- "AES-256-CBC":256 位 AES 加密演算法,使用 CBC 模式。
- "BF-CBC":Blowfish 加密演算法,使用 CBC 模式。
- "CAST5-CBC":CAST5 加密演算法,使用 CBC 模式。
- "DES-CBC":DES 加密演算法,使用 CBC 模式。
- "DES-EDE3-CBC":3DES 加密演算法,使用 CBC 模式。
- "RC2-CBC":RC2 加密演算法,使用 CBC 模式。
- "RC4":RC4 加密演算法。
- $password:用於解密的密碼。
- $options:可選引數,指定解密選項。預設為 0,表示不使用任何選項。可以使用以下選項的按位或(|)組合:
- OPENSSL_RAW_DATA:指定解密結果以原始二進位制資料返回,而不是預設的 base64 編碼字串。
- OPENSSL_ZERO_PADDING:指定禁用自動填充功能,解密時不會自動刪除填充的資料。
- $iv:可選引數,指定初始化向量(IV)。在使用 CBC 或 ECB 模式時需要提供。
- $tag:可選引數,指定驗證標籤。在使用 AEAD 加密演算法時需要提供。
- $aad:可選引數,指定附加的認證資料。在使用 AEAD 加密演算法時需要提供。
返回值:解密成功時返回解密後的資料,失敗時返回 false。
示例:
$key = "my_secret_key";
$encryptedData = "U2FsdGVkX1/9r9lq7rX7V1Uv+Gc9Z3w8";
$decryptedData = openssl_decrypt($encryptedData, "AES-256-CBC", $key, 0);
echo $decryptedData; // 輸出:Hello World!
注意事項:
- 請確保 OpenSSL 擴充套件已啟用,可以透過在 php.ini 檔案中取消註釋
extension=openssl
來啟用。 - 使用正確的密碼和加密演算法進行解密,否則會導致解密失敗。
- 在使用 CBC 或 ECB 模式時,需要提供正確的初始化向量(IV)。
- 在使用 AEAD 加密演算法時,需要提供正確的驗證標籤和附加的認證資料。