Algoritmul de calcul al ordinului ( algoritmul index-calculus ) este un algoritm probabilistic pentru calcularea logaritmului discret într-un inel de reziduuri modulo un număr prim . Complexitatea găsirii logaritmului discret stă la baza multor algoritmi legați de criptografie . Deoarece rezolvarea acestei probleme folosind numere mari necesită o cantitate mare de resurse pe care niciun computer modern nu le poate oferi . Un exemplu de astfel de algoritm este GOST R 34.10-2012 .
Maurice Krajczyk a propus pentru prima dată ideea de bază a acestui algoritm în cartea sa „Théorie des Nombres” în 1922. După 1976, problema logaritmului discret devine importantă în matematică și criptoanaliza. Acest lucru se datorează creării criptosistemului Diffie-Hellman . În acest sens, în 1977, R. Merkle a reluat discuțiile despre acest algoritm. Doi ani mai târziu, a fost publicat pentru prima dată de colegii lui Merkel. În cele din urmă, în 1979, Adlerman l-a optimizat, a cercetat complexitatea și l-a prezentat în forma pe care o cunoaștem astăzi. În prezent, algoritmul de calcul al ordinii și versiunile sale îmbunătățite oferă cea mai rapidă modalitate de a calcula logaritmi discreti în unele grupuri finite.
Pentru un număr prim dat și două numere întregi și este necesar să se găsească un număr întreg care să satisfacă comparația:
unde este un element al grupului ciclic generat de elementul .
Intrare : g - generator al unui grup ciclic de ordin n , a - dintr-un subgrup ciclic, p - un număr prim, c - parametru de fiabilitate, de obicei luat egal cu 10 sau un număr apropiat de această valoare (utilizat pentru implementarea algoritmului pe un computer, dacă o persoană decide, atunci nu se setează).
Sarcină : găsiți x astfel încât .
Ieșire : .
Rezolvați ecuația:
Alegeți o bază de factori Fie k = 7 Calculați
Luăm logaritmul și notăm Și obținem sistemul de ecuații
O rezolvam
Într-adevăr, prin urmare ,
Găsim k astfel încât
prin urmare
Luăm logaritmul acestei expresii și obținem
Raspuns :
În acest algoritm, numărul de iterații depinde atât de dimensiunea lui p , cât și de dimensiunea bazei factorilor. Dar alegem baza de factori în avans, iar dimensiunea acesteia este fixă. Prin urmare, complexitatea finală este determinată doar de mărimea numărului prim și este egală cu: , unde , sunt niște constante care depind de calcule intermediare, în special, de alegerea bazei factorilor.
Un algoritm de calcul accelerat al comenzii , a cărui esență este utilizarea unui tabel index.
Complexitatea de calcul este redusă la , în comparație cu algoritmul original.