sodium_crypto_box_seal
匿名の公開鍵暗号による暗号化
説明
string sodium_crypto_box_seal(#[\SensitiveParameter]string $message
, string $public_key
)
sodium_crypto_box と異なり、
sodium_crypto_box_seal に必要なのは、
受信側の公開鍵だけです。
その結果として、暗号化されたメッセージは静的な公開鍵と結びつきません。
そのため、認証が必要になります。
それゆえに、匿名の公開鍵暗号と呼ばれています。
sodium_crypto_box_seal
関数は暗号化メッセージの完全性を提供しています。
送信側の完全性の認証だけではありません。
送信側を認証したい場合、
sodium_crypto_sign
関数が入門として最適です。
パラメータ
-
message
-
暗号化するメッセージ
-
public_key
-
メッセージを復号できる鍵に対応する、公開鍵
戻り値
暗号化された文字列。
一度限りの公開鍵、
暗号化されたメッセージ、
認証タグ というフォーマットで成ります。
例
例1 sodium_crypto_box_seal の例
<?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!"