Scroll to navigation

BN_RAND(3SSL) OpenSSL BN_RAND(3SSL)

NUME

BN_rand_ex, BN_rand, BN_priv_rand_ex, BN_priv_rand, BN_pseudo_rand, BN_rand_range_ex, BN_rand_range, BN_priv_rand_range_ex, BN_priv_rand_range, BN_pseudo_rand_range - generate pseudo-random number

SINOPSIS

 #include <openssl/bn.h>
 int BN_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
                unsigned int strength, BN_CTX *ctx);
 int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
 int BN_priv_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
                     unsigned int strength, BN_CTX *ctx);
 int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom);
 int BN_rand_range_ex(BIGNUM *rnd, const BIGNUM *range, unsigned int strength,
                      BN_CTX *ctx);
 int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
 int BN_priv_rand_range_ex(BIGNUM *rnd, const BIGNUM *range, unsigned int strength,
                           BN_CTX *ctx);
 int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range);

Următoarele funcții au fost depreciate de la OpenSSL 3.0 și pot fi ascunse complet prin definirea OPENSSL_API_COMPAT cu o valoare de versiune adecvată, a se vedea openssl_user_macros(7):

 int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
 int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);

DESCRIERE

BN_rand_ex() generează un număr pseudoaleatoriu puternic din punct de vedere criptografic, cu lungimea bits și o putere de securitate de cel puțin strength biți, utilizând generatorul de numere aleatorii pentru contextul bibliotecii asociat cu ctx. Funcția stochează datele generate în rnd. Parametrul ctx poate fi NULL, caz în care se utilizează contextul bibliotecii implicite. Dacă bits este mai mic decât zero sau prea mic pentru a satisface cerințele specificate de parametrii top și bottom, se returnează o eroare. Parametrul top specifică cerințele privind cel mai semnificativ bit al numărului generat. Dacă este BN_RAND_TOP_ANY, nu există nicio constrângere. Dacă este BN_RAND_TOP_ONE, bitul superior trebuie să fie unu. Dacă este BN_RAND_TOP_TWO, cei doi biți cei mai semnificativi ai numărului vor fi setați la 1, astfel încât produsul a două astfel de numere aleatorii să aibă întotdeauna lungimea 2*bits. Dacă bottom este BN_RAND_BOTTOM_ODD, numărul va fi impar; dacă este BN_RAND_BOTTOM_ANY, poate fi impar sau par. Dacă bits este 1, atunci top nu poate fi de asemenea BN_RAND_TOP_TWO.

BN_rand() este identic cu BN_rand_ex(), cu excepția faptului că se utilizează întotdeauna contextul bibliotecii implicite.

BN_rand_range_ex() generează un număr pseudoaleatoriu puternic din punct de vedere criptografic rnd, cu un nivel de securitate de cel puțin strength biți, în intervalul 0 <= rnd < range, utilizând generatorul de numere aleatorii pentru contextul bibliotecii asociat cu ctx. Parametrul ctx poate fi NULL, caz în care se utilizează contextul bibliotecii implicite.

BN_rand_range() este identic cu BN_rand_range_ex(), cu excepția faptului că se utilizează întotdeauna contextul bibliotecii implicite.

BN_priv_rand_ex(), BN_priv_rand(), BN_priv_rand_rand_ex() și BN_priv_rand_range() au aceeași semantică ca BN_rand_ex(), BN_rand(), BN_rand_range_ex() și BN_rand_range(), respectiv. Acestea sunt destinate utilizării pentru generarea de valori care trebuie să rămână private și reflectă aceeași diferență dintre RAND_bytes(3) și RAND_priv_bytes(3).

NOTE

Verificați întotdeauna valoarea de returnare a erorii acestor funcții și nu considerați randomizarea ca fiind ceva de la sine înțeles: apare o eroare dacă CSPRNG nu a fost inițializat cu un suficient nivel aleatoriu pentru a asigura o secvență de octeți imprevizibilă.

VALORI RETURNATE

Funcțiile returnează 1 în caz de succes, 0 în caz de eroare. Codurile de eroare pot fi obținute prin ERR_get_error(3).

CONSULTAȚI ȘI

ERR_get_error(3), RAND_add(3), RAND_bytes(3), RAND_priv_bytes(3), RAND(7), EVP_RAND(7)

ISTORIC

  • Începând cu versiunea 1.1.0 a OpenSSL, BN_pseudo_rand() este identică cu BN_rand(), iar BN_pseudo_rand_range() este identică cu BN_rand_range(). Funcțiile BN_pseudo_rand() și BN_pseudo_rand_range() au fost definite ca învechite în OpenSSL 3.0.
  • Funcțiile BN_priv_rand() și BN_priv_rand_range() au fost adăugate în OpenSSL 1.1.1.
  • Funcțiile BN_rand_ex(), BN_priv_rand_ex(), BN_rand_range_ex() și BN_priv_rand_range_ex() au fost adăugate în OpenSSL 3.0.

DREPTURI DE AUTOR

Drepturi de autor 2000-2022 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>.

TRADUCERE

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.

12 iulie 2025 3.5.1