openssl encrypt()

Från Wiki.linux.se
Version från den 31 oktober 2024 kl. 16.44 av Admin (diskussion | bidrag) (Skapade sidan med '== openssl_encrypt == '''(PHP 5 >= 5.3.0, PHP 7, PHP 8)''' === openssl_encrypt — Krypterar data === ==== Beskrivning ==== <pre> openssl_encrypt(#[\SensitiveParameter] string $data, string $cipher_algo, #[\SensitiveParameter] string $passphrase, int $options = 0, string $iv = "", string &$tag = null, string $aad = "", int $tag_length = 16): string|false </pre> Funktionen `openssl_encrypt()` krypterar given data med en specifik metod och lösenfras och returnerar en r...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

openssl_encrypt

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

openssl_encrypt — Krypterar data

Beskrivning

openssl_encrypt(#[\SensitiveParameter] string $data, string $cipher_algo, #[\SensitiveParameter] string $passphrase, int $options = 0, string $iv = "", string &$tag = null, string $aad = "", int $tag_length = 16): string|false

Funktionen `openssl_encrypt()` krypterar given data med en specifik metod och lösenfras och returnerar en rå eller base64-kodad sträng.

Parametrar

data Den okrypterade textmeddelandet som ska krypteras.

cipher_algo Cipher-metoden. För en lista över tillgängliga metoder, använd openssl_get_cipher_methods().

passphrase Lösenfrasen. Om lösenfrasen är kortare än förväntat fylls den ut tyst med NUL-tecken; om lösenfrasen är längre än förväntat blir den tyst avkortad.

options Bitvis kombination av flaggorna OPENSSL_RAW_DATA och OPENSSL_ZERO_PADDING eller OPENSSL_DONT_ZERO_PAD_KEY.

iv En icke-null Initieringsvektor. Om IV:n är kortare än förväntat fylls den ut med NUL-tecken och en varning ges; om den är längre än förväntat avkortas den och en varning ges.

tag Autentiseringstaggen, skickas med referens när AEAD-cipher-läge (GCM eller CCM) används.

aad Ytterligare autentiserad data.

tag_length Längden på autentiseringstaggen. Värdet kan vara mellan 4 och 16 för GCM-läge.

Returvärden

Returnerar den krypterade strängen vid framgång eller false vid misslyckande.

Fel/Undantag

Emits ett E_WARNING-nivåfel om en okänd cipher-algoritm skickas via cipher_algo-parametern.

Emits ett E_WARNING-nivåfel om en tom värde skickas in via iv-parametern.

Ändringslogg

Version Beskrivning
7.1.0 Parametrarna tag, aad och tag_length lades till.

Exempel

Exempel #1 AES Authenticated Encryption i GCM-läge för PHP 7.1+

<?php
// $key bör ha genererats på ett kryptografiskt säkert sätt, t.ex. med openssl_random_pseudo_bytes
$plaintext = "message to be encrypted";
$cipher = "aes-128-gcm";
if (in_array($cipher, openssl_get_cipher_methods())) {
    $ivlen = openssl_cipher_iv_length($cipher);
    $iv = openssl_random_pseudo_bytes($ivlen);
    $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
    // Spara $cipher, $iv och $tag för dekryptering senare
    $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
    echo $original_plaintext."\n";
}
?>

Exempel #2 AES Authenticated Encryption före PHP 7.1

<?php
// $key tidigare genererat på ett säkert sätt, t.ex. med openssl_random_pseudo_bytes
$plaintext = "message to be encrypted";
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
$ciphertext = base64_encode($iv.$hmac.$ciphertext_raw);

// Dekryptera senare...
$c = base64_decode($ciphertext);
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = substr($c, 0, $ivlen);
$hmac = substr($c, $ivlen, $sha2len=32);
$ciphertext_raw = substr($c, $ivlen+$sha2len);
$original_plaintext = openssl_decrypt($ciphertext_raw, $cipher, $key, $options=OPENSSL_RAW_DATA, $iv);
$calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
if (hash_equals($hmac, $calcmac)) { // säker jämförelse för timing-attacker
    echo $original_plaintext."\n";
}
?>

Se även

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.openssl-encrypt.php PHP Funktioner Funktionsreferens OpenSSL-funktioner


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 som har sponsrat Linux.se med webserver.