PHP8 sodium_crypto_box_seal

2024-03-16 10:10 更新

(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!"


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号