函数名称:sodium_crypto_box_open()
函数描述:sodium_crypto_box_open()函数用于解密已加密的消息,使用公钥加密和私钥解密的非对称加密算法。
适用版本:PHP 7.2.0及以上版本
语法:string sodium_crypto_box_open(string $ciphertext, string $nonce, string $keypair)
参数:
- $ciphertext:加密的消息,以字符串形式传递。
- $nonce:用于加密的随机数,以字符串形式传递。
- $keypair:公钥和私钥的组合,以字符串形式传递。
返回值:解密后的原始消息,以字符串形式返回。如果解密失败,返回false。
示例:
// 定义公钥和私钥
$keypair = sodium_crypto_box_keypair();
// 获取公钥和私钥
$publicKey = sodium_crypto_box_publickey($keypair);
$privateKey = sodium_crypto_box_secretkey($keypair);
// 原始消息
$message = "Hello, world!";
// 用公钥加密消息
$nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES); // 生成随机数
$ciphertext = sodium_crypto_box($message, $nonce, $publicKey, $privateKey);
// 解密消息
$decryptedMessage = sodium_crypto_box_open($ciphertext, $nonce, $keypair);
// 输出解密后的原始消息
echo $decryptedMessage;
注意事项:
- 在使用sodium_crypto_box_open()函数之前,需要先生成公钥和私钥对,可以使用sodium_crypto_box_keypair()函数生成。
- 解密前需要确保传递正确的密文、随机数和密钥对。
- 解密成功后,返回的是原始消息的字符串形式。
- 如果解密失败,函数会返回false,需要对返回值进行检查。
更多信息和示例可以参考PHP官方文档:https://www.php.net/manual/en/function.sodium-crypto-box-open.php