BN_MOD_MUL_RECIPROCAL(3ssl) | OpenSSL | BN_MOD_MUL_RECIPROCAL(3ssl) |
NUME
BN_mod_mul_reciprocal, BN_div_recp, BN_RECP_CTX_new, BN_RECP_CTX_free, BN_RECP_CTX_set - înmulțirea modulară utilizând reciproca
SINOPSIS
#include <openssl/bn.h> BN_RECP_CTX *BN_RECP_CTX_new(void); void BN_RECP_CTX_free(BN_RECP_CTX *recp); int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *m, BN_CTX *ctx); int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *a, BN_RECP_CTX *recp, BN_CTX *ctx); int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_RECP_CTX *recp, BN_CTX *ctx);
DESCRIERE
BN_mod_mul_reciprocal() poate fi utilizată pentru a efectua o operație eficientă BN_mod_mul(3) atunci când operația va fi efectuată în mod repetat cu același modul. Calculează r=(a*b)%m folosind recp=1/m, care este setat așa cum este descris mai jos. ctx este un BN_CTX alocat anterior, utilizat pentru variabile temporare.
BN_RECP_CTX_new() alocă și inițializează o structură BN_RECP.
BN_RECP_CTX_free() eliberează componentele structurii BN_RECP și, dacă aceasta a fost creată de BN_RECP_CTX_new(), și structura în sine. Dacă recp este NULL, nu se face nimic.
BN_RECP_CTX_set() stochează m în recp și îl pregătește pentru a calcula 1/m și a-l decala la stânga cu BN_num_bits(m)+1 pentru a-l transforma într-un număr întreg. Rezultatul și numărul de biți cu care a fost deplasat la stânga vor fi stocate ulterior în recp.
BN_div_recp() împarte a la m folosind recp. Acesta plasează coeficientul în dv și restul în rem.
Structura BN_RECP_CTX nu poate fi partajată între fire.
VALORI RETURNATE
BN_RECP_CTX_new() returnează valoarea BN_RECP_CTX nou alocată și NULL în caz de eroare.
BN_RECP_CTX_free() nu are valoare de returnare.
Pentru celelalte funcții, 1 este returnat în caz de succes, 0 în caz de eroare. Codurile de eroare pot fi obținute prin ERR_get_error(3).
CONSULTAȚI ȘI
ISTORIC
BN_RECP_CTX_init() a fost eliminată în OpenSSL 1.1.0
DREPTURI DE AUTOR
Drepturi de autor 2000-2017 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.
5 august 2025 | 3.5.2 |