函数名称:sodium_crypto_secretbox_open()
函数功能:在使用libsodium扩展的PHP版本中,sodium_crypto_secretbox_open()函数用于解密通过sodium_crypto_secretbox()函数加密的密文。
函数参数:sodium_crypto_secretbox_open($ciphertext, $nonce, $key)
- $ciphertext:要解密的密文,类型为字符串。
- $nonce:用于加密的随机字符串,类型为字符串。
- $key:加密密钥,类型为字符串。
返回值:解密成功时返回明文字符串,解密失败时返回false。
适用版本:该函数适用于PHP 7.2.0及以上版本,并且需要安装libsodium扩展。
示例代码:
// 加密密钥和随机字符串
$key = sodium_crypto_secretbox_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
// 要加密的明文
$message = "Hello, World!";
// 使用密钥和随机字符串加密明文
$ciphertext = sodium_crypto_secretbox($message, $nonce, $key);
// 解密密文
$plaintext = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
if ($plaintext !== false) {
echo "解密成功:".$plaintext;
} else {
echo "解密失败!";
}
在上面的示例中,我们首先生成了一个加密密钥和一个随机字符串。然后,我们使用密钥和随机字符串对明文进行加密,并将加密后的密文存储在$ciphertext变量中。
接下来,我们使用相同的密钥和随机字符串调用sodium_crypto_secretbox_open()函数来解密密文。如果解密成功,将会返回解密后的明文字符串,并输出"解密成功:"加上解密后的明文。如果解密失败,将输出"解密失败!"。
注意:在使用sodium_crypto_secretbox_open()函数之前,需要先调用sodium_crypto_secretbox_keygen()函数生成一个加密密钥,并调用random_bytes()函数生成一个随机字符串作为nonce。