Here's a quick example on how to use sodium_crypto_box_seal(); where you have 2 people exchanging a $message - person 1 encrypts it so that only person 2 can decrypt it. It does not allow person 2 to know who sent it, as only their public key way used (see sodium_crypto_box to do that).
<?php
$keypair = sodium_crypto_box_keypair();
$keypair_public = sodium_crypto_box_publickey($keypair);
$keypair_secret = sodium_crypto_box_secretkey($keypair);
// $key_public = sodium_crypto_box_publickey_from_secretkey($keypair_secret);
// $keypair = sodium_crypto_box_keypair_from_secretkey_and_publickey($keypair_secret, $key_public);
//--------------------------------------------------
// Person 1, encrypting
$message = 'hello';
$encrypted = sodium_crypto_box_seal($message, $keypair_public);
echo base64_encode($encrypted) . "\n";
//--------------------------------------------------
// Person 2, decrypting
$decrypted = sodium_crypto_box_seal_open($encrypted, $keypair);
echo $decrypted . "\n";
?>sodium_crypto_box_seal
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
sodium_crypto_box_seal
Референца за `function.sodium-crypto-box-seal.php` со подобрена типографија и навигација.
sodium_crypto_box_seal
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_box_seal — Анонимно шифрирање со јавен клуч
= NULL
$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!"