sodium crypto box()

Från Wiki.linux.se
Version från den 4 november 2024 kl. 14.57 av Admin (diskussion | bidrag) (→‎Returnerar)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

sodium_crypto_box (PHP 7 >= 7.2.0, PHP 8)

sodium_crypto_box — Autentiserad kryptering med publik nyckel

Beskrivning

sodium_crypto_box(#[\SensitiveParameter] string $message, string $nonce, #[\SensitiveParameter] string $key_pair): string

Krypterar ett meddelande med asymmetrisk (publik nyckel) kryptering.

Algoritmen som används av funktioner som börjar med sodium_crypto_box() är Elliptic Curve Diffie-Hellman över Montgomery-kurvan, Curve25519, ofta förkortad som X25519.

Parametrar

message Meddelandet som ska krypteras.

nonce Ett nummer som måste användas endast en gång per meddelande. 24 byte långt. Detta är tillräckligt stort för att genereras slumpmässigt (t.ex. med random_bytes()).

key_pair Se sodium_crypto_box_keypair_from_secretkey_and_publickey(). Detta bör inkludera sändarens X25519-hemliga nyckel och mottagarens X25519-publika nyckel.

Returnerar

Returnerar det krypterade meddelandet (chiffertext plus autentiseringstag). Chiffertexten blir 16 byte längre än klartexten och är en rå binär sträng. Använd sodium_bin2base64() för säker lagring.

Exempel

Exempel 1: Enkel kryptering och dekryptering

 // Generera ett nyckelpar för avsändaren och mottagaren
 $sender_keypair = sodium_crypto_box_keypair();
 $sender_secretkey = sodium_crypto_box_secretkey($sender_keypair);
 $sender_publickey = sodium_crypto_box_publickey($sender_keypair);

 $recipient_keypair = sodium_crypto_box_keypair();
 $recipient_secretkey = sodium_crypto_box_secretkey($recipient_keypair);
 $recipient_publickey = sodium_crypto_box_publickey($recipient_keypair);

 // Skapa ett kombinerat nyckelpar för kryptering
 $keypair = sodium_crypto_box_keypair_from_secretkey_and_publickey($sender_secretkey, $recipient_publickey);

 // Meddelandet som ska krypteras
 $message = "Hej, detta är ett hemligt meddelande!";
 // Generera ett unikt nonce
 $nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES);

 // Kryptera meddelandet
 $ciphertext = sodium_crypto_box($message, $nonce, $keypair);

 // Dekryptera meddelandet
 $decrypted_message = sodium_crypto_box_open($ciphertext, $nonce, sodium_crypto_box_keypair_from_secretkey_and_publickey($recipient_secretkey, $sender_publickey));

 echo $decrypted_message; // Visar: Hej, detta är ett hemligt meddelande!
 

Exempel 2: Kryptering med användning av Base64 för säker lagring av chiffertext

 // Generera nyckelpar för avsändare och mottagare som i Exempel 1

 // Kryptera meddelandet och kodifiera i Base64 för säker lagring
 $encrypted_message = sodium_crypto_box($message, $nonce, $keypair);
 $base64_encrypted_message = sodium_bin2base64($encrypted_message, SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING);

 echo $base64_encrypted_message; // Utskrivet: Base64-kodad chiffertext
 

Exempel 3: Kryptering med dynamisk nyckelgenerering och verifikation

 // Dynamisk nyckelgenerering för temporär kryptering
 $temp_keypair = sodium_crypto_box_keypair();
 $temp_secretkey = sodium_crypto_box_secretkey($temp_keypair);
 $temp_publickey = sodium_crypto_box_publickey($temp_keypair);

 // Kombinera den temporära nyckeln med mottagarens publika nyckel
 $temp_keypair_combined = sodium_crypto_box_keypair_from_secretkey_and_publickey($temp_secretkey, $recipient_publickey);

 // Kryptera ett meddelande
 $nonce = random_bytes(SODIUM_CRYPTO_BOX_NONCEBYTES);
 $secure_message = "Verifiera detta hemliga meddelande";
 $ciphertext = sodium_crypto_box($secure_message, $nonce, $temp_keypair_combined);

 echo $ciphertext; // Utskrivet: Krypterad och verifierbar chiffertext
 

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.sodium-crypto-box.php
PHP Funktioner Funktionsreferens Kryptografitillägg Sodium


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp Stockholm som har sponsrat Linux.se med webserver.