A Modulo gyors hatványozási algoritmusok egyfajta modulo hatványozási algoritmusok , amelyeket széles körben használnak különféle kriptorendszerekben a nagy számokkal végzett számítási műveletek felgyorsítására.
Ki kell számítani, hogy hol elég nagyok a számok , és a modulust bontsuk fel prímosztókra . Ezután a modulo gyors hatványozáshoz használhatja a kínai maradéktételt, és megoldhatja az egyenletrendszert (miután korábban a maradékokat Fermat tételével számoltuk ki, ahol ):
A kényelem kedvéért lecserélve a rendszert a következőre vonatkozóan oldjuk meg és kapjuk meg .
PéldaLegyen kötelező kiszámítani
A rendszert a formában ábrázoljuk
Ha az első egyenletből t -t behelyettesítjük a másodikba, azt kapjuk, hogy , akkor , vagy , vagy ;
behelyettesítve akkor t az első egyenletből a harmadikba, figyelembe véve a kifejezést kapunk vagy , akkor ;
akkor tehát, ;
Ezzel az algoritmussal jelentős nyereség érhető el a szorzás végrehajtásakor. Ennek az algoritmusnak a használatakor a szorzás kétszer gyorsabban megy végbe.
Ezzel a módszerrel csökkentheti a számítások számát . Legyen kicsit hosszú . A szokásos hatványozással körülbelül modulo szorzások szükségesek. Tegyük fel, hogy ki akarjuk számolni . Csökkentve ezzel a probléma a számításra redukálódik . Ebben a jelölésben minden fokozat hossza . Ezért minden hatványozási művelethez műveletekre lesz szükség . A Total szorzást igényel modulo prímszámmal vagy az eredeti modulo szorzás helyett .
Legyen szükséges kiszámítani . Képzeld el a diplomát , hol
Tegyük formába:
Ezután kiszámítjuk a kifejezés értékét, és végrehajtjuk a helyettesítést a transzformált kifejezésben.
Ezt a műveletet addig hajtják végre, amíg meg nem találják az eredményt.
PéldaLegyen szükséges kiszámítani . Képzeljük a fokot mint . Képviseljük a formában
Ha - prím vagy két nagy prímszám szorzata, akkor általában az ismételt négyzetesítés és szorzás módszerét alkalmazzák. Ha azonban összetett, akkor ezt a módszert általában a kínai maradéktétellel együtt használják.
Ennek az algoritmusnak az átlagos bonyolultsága megegyezik a két bites számok szorzásának és a bites számok egy bites számmal való osztásának műveleteivel . A -bites és hosszabb számok esetében ez az algoritmus meglehetősen gyorsan végrehajtódik számítógépen.
Ezt a módszert 1985-ben Peter Montgomery javasolta a moduláris hatványozás felgyorsítására.
Ebben a módszerben minden szám egy bizonyos képhez van társítva, és minden számítást a -val hajtunk végre , és a végén megtörténik az átmenet a képről a számra.
Tétel (Montgomery). Legyen másodprime pozitív egész számok, és . Ekkor bármely egész szám osztható -val , és -vel . Sőt, ha , akkor a különbség vagy , vagy . |
Ez a tétel lehetővé teszi, hogy optimális módon számítsuk ki néhány kényelmesen kiválasztott érték értékét .
Definíció 1. A , , , számok esetében úgy, hogy gcd és , a szám maradékát a mennyiségnek nevezzük . |
Definíció 2. Két egész szám Montgomery-szorzatát számnak nevezzük |
Tétel (Montgomery-szabályok). Legyenek a számok másodprímek és . Aztán és |
Vagyis az érthetőség kedvéért írjuk a hatványozás kifejezését :
Algoritmus (Montgomery terméke). Legyen egész számok adott , ahol páratlan, és . Ez az algoritmus visszaadja . 1.[M Montgomery funkció] { ; ; //A tételnek megfelelően (Montgomery) . 2.[Helyes eredmény] ha ; visszatérés ; } |
Algoritmus (Montgomery hatványozási módszere). Legyen a , , és számok kiválasztása ugyanúgy, mint az algoritmusnál (Montgomery-szorzat). Ez az algoritmus visszaadja . A bináris biteket -vel jelöljük . 1.[Kezdeti beállítás] ; //Valamilyen osztási módszert használva maradékkal. ; //Valamilyen osztási módszert használva maradékkal. 2.[A hatványozás sémája] for { ; // algoritmus használatával (Montgomery termék) . ha ; } //Most egyenlő . 3.[Végső diploma] ; |
Ennek eredményeként kapunk egy képet , amelyből megkapjuk a végeredményt , és a kifejezés előre kiszámításra kerül. Két szám szorzata esetén az eredmény így fog kinézni
PéldaLegyen , és meg akarunk szorozni két számot és (azaz négyzet)
van egy képe
(ellenőrizendő, hogy van-e kép )
A képeket szaporítjuk:
,
A szorzás képéről áttérünk a kívánt előképre
,
,
Ennek megfelelően a prototípus
Ez a módszer teljesítményelőnnyel rendelkezik az ismételt négyzetesítési és szorzási módszerrel szemben, mivel két szám modulo szorzása sokkal gyorsabb.
Ezzel a módszerrel csökkentheti (nagy érték esetén ) a függvény kiszámítását két méretszám szorzatára . A Montgomery-szorzás összetettségét a következőre becsüljük .
Az érthetőség kedvéért vegyük figyelembe a bázis módszerét , azaz bináris (vagy bináris, mivel ) számrendszerben végezzük a számításokat . Az alapnak van egy pluszja, hogy az osztás művelete jobbra, a szorzás pedig balra tolódik el.
Definíció 1. Egy nem negatív egész számrendszerben való ábrázolása bázissal (vagy egy szám jelölésével ) az egész számok legrövidebb sorozata , amelyet a bejegyzés számjegyeinek nevezünk úgy, hogy ezek a számjegyek mindegyike kielégíti az egyenlőtlenséget. , és az egyenlőség |
Vegyük például a szorzatból való vétel bináris algoritmusát .
Algoritmus (bináris algoritmus a szorzáshoz és a maradék felvételéhez). Legyen pozitív egész számok adottak úgy, hogy , . Ez az algoritmus egy összetett művelet eredményét adja vissza . Feltételezzük, hogy a szám bináris reprezentációja az 1 definíció szerint van megadva , így a szám bitjei formájúak , és a legjelentősebb bit. 1.[Kezdeti beállítás] ; 2.[Összes bit konvertálása ]for { ; ha ; ha ; ha ; } visszatérés ; |
Ennek a módszernek van egy hátránya: nem használja ki a modern számítógépeken elérhető többbites aritmetika előnyeit. Ezért általában nagy alapokat használnak .
A forma egy kifejezésének számítási bonyolultsági becslése van −