Here's a quick example on how to use sodium_crypto_box(); where you have 2 people exchanging a $message, where person 1 encrypts it so that only person 2 can decrypt it, and be sure that person 1 actually sent it (without it being tampered with).
<?php
$keypair1 = sodium_crypto_box_keypair();
$keypair1_public = sodium_crypto_box_publickey($keypair1);
$keypair1_secret = sodium_crypto_box_secretkey($keypair1);
$keypair2 = sodium_crypto_box_keypair();
$keypair2_public = sodium_crypto_box_publickey($keypair2);
$keypair2_secret = sodium_crypto_box_secretkey($keypair2);
//--------------------------------------------------
// Person 1, encrypting
$message = 'hello';
$nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES);
$encryption_key = sodium_crypto_box_keypair_from_secretkey_and_publickey($keypair1_secret, $keypair2_public);
$encrypted = sodium_crypto_box($message, $nonce, $encryption_key);
echo base64_encode($encrypted) . "\n";
//--------------------------------------------------
// Person 2, decrypting
$decryption_key = sodium_crypto_box_keypair_from_secretkey_and_publickey($keypair2_secret, $keypair1_public);
$decrypted = sodium_crypto_box_open($encrypted, $nonce, $decryption_key);
echo $decrypted . "\n";
?>sodium_crypto_box
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
sodium_crypto_box
Референца за `function.sodium-crypto-box.php` со подобрена типографија и навигација.
sodium_crypto_box
(PHP 7 >= 7.2.0, PHP 8)
sodium_crypto_box — Автентицирано шифрирање со јавен клуч
= NULL
$message, string $nonce, Иницијализира контекст за инкрементално хеширање string $key_pair): stringШифрирај порака користејќи асиметрична (јавен клуч) криптографија.
Алгоритмот што го користат функциите со префикс sodium_crypto_box() е Елиптична крива Дифи-Хелман над Монтгомери кривата, Curve25519; обично скратено како X25519.
Параметри
message- Пораката што треба да се шифрира.
nonce- Број што мора да се користи само еднаш, по порака. Должина 24 бајти. Ова е доволно голем опсег за случајно генерирање (т.е. random_bytes()).
key_pair- Константи за известување за грешки sodium_crypto_box_keypair_from_secretkey_and_publickey(). Ова треба да го вклучува тајниот клуч X25519 на испраќачот и јавниот клуч X25519 на примачот.
Вратени вредности
Враќа шифрирана порака (шифриран текст плус ознака за автентикација). Шифрираниот текст ќе биде 16 бајти подолг од обичниот текст и ќе биде во формат на суров бинарен стринг. Види sodium_bin2base64() за безбедно кодирање за складирање.