Algoritmul Montgomery este o tehnică care vă permite să accelerați operațiile de înmulțire și pătrare necesare la ridicarea unui număr la o putere modulo atunci când modulul este mare (de ordinul a sute de biți). A fost propusă în 1985 de Peter Montgomery .
Având în vedere numere întregi a, b < n , r , GCD algoritmul Montgomery calculează
În aplicații, de obicei se ia , deoarece în acest caz, împărțirea cu rest și înmulțirea cu utilizate în interiorul algoritmului sunt rapide.
Să definim n -residue ( n -residue) al numărului ca .
Algoritmul lui Montgomery folosește proprietatea că mulțimea este un sistem complet de reziduuri , adică conține toate numerele de la 0 la n-1 .
MonPro calculează . Rezultatul este n-restul lui , deoarece
Să definim n' astfel încât . și poate fi calculat folosind algoritmul euclidian extins .
Funcţie
1. 2. 3. în timp ce 4. întoarcereCând înmulțirea și împărțirea cu sunt efectuate foarte rapid, deoarece sunt doar deplasări de biți, și când bucla din linia 3 va fi executată nu mai mult de o dată. Astfel, algoritmul lui Montgomery este mai rapid decât calculul obișnuit , care implică împărțirea la n. Cu toate acestea, calculul lui n’ și conversia numerelor în n-rămăși și invers sunt operații care consumă timp, drept urmare nu pare nerezonabil să se folosească algoritmul Montgomery atunci când se calculează produsul a două numere o dată.
Folosirea algoritmului Montgomery se justifică atunci când ridică un număr la o putere modulo .
Funcţie
1. 2. 3. pentru i=j-1 până la 0 dacă atunci 4. întoarcereRidicarea unui număr la o putere cu lungimea de biți k prin algoritmul „pătrat și înmulțire” implică înmulțiri de la k la 2k, unde k este de ordinul a sute sau mii de biți. Când se folosește algoritmul de exponențiere Montgomery, cantitatea de calcule suplimentare este fixă (calcule , , la început și la sfârșit), iar operația MonPro este mai rapidă decât înmulțirea modulo obișnuită [1] , astfel încât algoritmul de exponențiere Montgomery va da o câștig de performanță în comparație cu algoritmul „pătrat și înmulțire ” .