EVP_BYTESTOKEY(3ssl) OpenSSL EVP_BYTESTOKEY(3ssl)

EVP_BytesToKey - rutină de criptare pe bază de parolă

#include <openssl/evp.h>
int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
                   const unsigned char *salt,
                   const unsigned char *data, int datal, int count,
                   unsigned char *key, unsigned char *iv);

EVP_BytesToKey() derivă o cheie și un IV din diferiți parametri. type este cifrul pentru care se derivă cheia și IV. md este suma de control a mesajului care trebuie utilizată. Parametrul salt este utilizat ca sare în obținere: trebuie să indice un tampon de 8 octeți sau NULL dacă nu se utilizează nicio sare. data este un tampon care conține datal octeți și care este utilizat pentru obținerea datelor de creare a cheilor. count este numărul de iterații de utilizat. Cheia și IV obținute vor fi scrise în key și, respectiv, iv.

O aplicație tipică a acestei funcții este obținerea materialului de chei pentru un algoritm de criptare dintr-o parolă din parametrul data.

Creșterea valorii parametrului count încetinește algoritmul, ceea ce face mai dificil pentru un atacator să efectueze un atac prin forță brută folosind un număr mare de parole candidate.

Dacă lungimea totală a cheii și a IV este mai mică decât lungimea sumei de control și se utilizează MD5, atunci algoritmul de obținere este compatibil cu PKCS#5 v1.5, altfel se utilizează o extensie non-standard pentru a obține datele suplimentare.

Aplicațiile mai noi ar trebui să utilizeze un algoritm mai modern, cum ar fi PBKDF2 definit în PKCS#5v2.1 și furnizat de PKCS5_PBKDF2_HMAC.

Cheia și IV sunt obținute prin concatenarea D_1, D_2 etc. până când sunt disponibile suficiente date pentru cheie și IV. D_i este definit ca:

D_i = HASH^count(D_(i-1) || data || salt)

unde || denotă concatenarea, D_0 este gol, HASH este algoritmul de sumă de control utilizat, HASH^1(data) este un simplu HASH(data), HASH^2(data) este HASH(HASH(data)) și așa mai departe.

Octeții inițiali sunt utilizați pentru cheie, iar octeții următori pentru IV.

Dacă data este NULL, atunci EVP_BytesToKey() returnează numărul de octeți necesar pentru a stoca cheia obținută. În caz contrar, EVP_BytesToKey() returnează dimensiunea cheii obținute în octeți sau 0 în caz de eroare.

evp(7), RAND_bytes(3), PKCS5_PBKDF2_HMAC(3), EVP_EncryptInit(3)

Drepturi de autor 2000-2016 The OpenSSL Project Authors. Toate drepturile rezervate.

Licențiat sub Licența Apache 2.0 („License”). Nu aveți voie să utilizați acest fișier decât în conformitate cu licența. Puteți obține o copie din fișierul LICENSE din distribuția sursei sau de la https://www.openssl.org/source/license.html.

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

5 august 2025 3.5.2