table of contents
- trixie-backports 4.28.0-2~bpo13+2
- testing 4.28.0-2
- unstable 4.28.0-2
| 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¶
ERR_get_error(3), BN_add(3), BN_CTX_new(3)
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.
| 12 iulie 2025 | 3.5.1 |