PHP8 sodium_crypto_box_seal
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_box_seal — 匿名公钥加密
说明
sodium_crypto_box_seal(string $message, string $public_key): string
对邮件进行加密,以便只有收件人才能解密该邮件。
与 sodium_crypto_box() 不同,您只需要知道收件人的 使用 sodium_crypto_box_seal() 的公钥。这样做的一个后果 然而,方便的是密文不绑定到静态公钥, 因此未经过身份验证。因此,匿名公钥加密。
sodium_crypto_box_seal() 仍然提供密文完整性。只是不是 发件人身份认证。
如果还需要发件人身份验证,则 sodium_crypto_sign() 函数 可能是最好的起点。
参数
message
要加密的消息。
public_key
与唯一可以解密消息的密钥相对应的公钥。
返回值
格式为(一次性公钥、加密消息、身份验证标记)的密文字符串。
示例
示例 #1 sodium_crypto_box_seal() example
<?php
$keypair = sodium_crypto_box_keypair();
$public_key = sodium_crypto_box_publickey($keypair);
// Obfuscated plaintext to make the example more fun
$plaintext_b64 = "V3JpdGluZyBzb2Z0d2FyZSBpbiBQSFAgY2FuIGJlIGEgZGVsaWdodCE=";
$decoded_plaintext = sodium_base642bin($plaintext_b64, SODIUM_BASE64_VARIANT_ORIGINAL);
$sealed = sodium_crypto_box_seal($decoded_plaintext, $public_key);
var_dump(base64_encode($sealed));
$opened = sodium_crypto_box_seal_open($sealed, $keypair);
var_dump($opened);
?>
以上示例的输出类似于:
string(120) "oRBXXAV4iQBrxlV4A21Bord8Yo/D8ZlrIIGNyaRCcGBfpz0map52I3xq6l+CST+1NSgQkbV+HiYyFjXWiWiaCGupGf+zl4bgWj/A9Adtem7Jt3h3emrMsLw=" string(41) "Writing software in PHP can be a delight!"