sodium crypto box()
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.