函式名稱:sodium_crypto_aead_aes256gcm_decrypt()
函式描述:該函式用於使用AES-256-GCM解密經過AEAD(認證加密關聯資料)加密的資料。
適用版本:PHP 7.2.0及以上版本。
語法:sodium_crypto_aead_aes256gcm_decrypt(string $ciphertext, string $additional_data, string $nonce, string $key): string|false
引數:
- $ciphertext:要解密的密文資料,必須是一個字串。
- $additional_data:附加的認證資料,可選引數,必須是一個字串。
- $nonce:用於加密的nonce值,必須是一個字串,長度為24位元組。
- $key:用於解密的金鑰,必須是一個字串,長度為32位元組。
返回值:
- 如果解密成功,則返回明文資料,型別為字串。
- 如果解密失敗,則返回false。
示例:
$ciphertext = hex2bin('2b7e151628aed2a6abf7158809cf4f3c');
$additional_data = hex2bin('f0f1f2f3f4f5f6f7f8f9');
$nonce = hex2bin('0708090a0b0c0d0e0f10111213141516171819');
$key = hex2bin('000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f');
$plaintext = sodium_crypto_aead_aes256gcm_decrypt($ciphertext, $additional_data, $nonce, $key);
if ($plaintext === false) {
echo "解密失敗";
} else {
echo "解密成功,明文資料為:" . $plaintext;
}
注意事項:
- 為了確保安全性,應該使用隨機生成的nonce和金鑰,並且每次加密都使用不同的nonce。
- 金鑰和nonce的長度必須滿足要求,否則會導致解密失敗。
- 附加的認證資料可選,但如果使用了,則在解密時必須與加密時使用的相同。
- 如果解密失敗,可能是由於密文資料被篡改或金鑰不正確。