Modulo rychlé umocňovací algoritmy jsou druhem modulo umocňovacích algoritmů , které jsou široce používány v různých kryptosystémech pro urychlení výpočetních operací s velkými čísly.
Nechť je požadováno vypočítat , kde jsou čísla dostatečně velká, a nechat modul rozložit na prvočíselníky . Pak pro rychlé umocnění modulo můžete použít čínskou větu o zbytku a vyřešit systém rovnic (když jste předtím vypočítali zbytky pomocí Fermatovy věty, kde ):
Nahrazením za pro pohodlí řešíme systém s ohledem na a získáváme .
PříkladNechť je požadováno spočítat
Systém reprezentujeme ve formě
Dosazením t z první rovnice do druhé dostaneme , potom , nebo , nebo ;
dosazením potom t z první rovnice do třetí, přičemž se vezme v úvahu výraz pro dostaneme nebo , pak ;
pak tedy ,;
Významný zisk z tohoto algoritmu lze získat při provádění násobení. Při použití tohoto algoritmu bude násobení prováděno dvakrát rychleji.
Tato metoda umožňuje snížit počet výpočtů v čase. Ať je to trochu dlouhé . Při obvyklém umocňování to bude trvat asi násobení modulo. Řekněme, že chceme počítat . Snížení o a problém se redukuje na kalkulaci . Každý stupeň v tomto zápisu má délku . Proto bude každá operace umocňování vyžadovat operace. Celkem bude vyžadovat násobení modulo prvočíslo nebo místo původního násobení modulo .
Nechť je třeba vypočítat . Představte si stupeň , kde
Uveďme to ve tvaru:
Dále se vypočítá hodnota výrazu a provede se nahrazení v transformovaném výrazu.
Tato operace se provádí, dokud není nalezen výsledek.
PříkladNechť je třeba vypočítat . Představme stupeň jako . Pojďme reprezentovat ve formě
Jestliže - prvočíslo nebo je součinem dvou velkých prvočísel, pak se obvykle používá metoda opakované kvadratury a násobení. Pokud je však složený, pak se tato metoda obvykle používá spolu s čínskou větou o zbytku.
Průměrná složitost tohoto algoritmu se rovná operacím násobení dvoubitových čísel plus operacím dělení -bitových čísel -bitovým číslem. Pro -bitová a delší čísla se tento algoritmus na počítači provádí poměrně rychle.
Tuto metodu navrhl v roce 1985 Peter Montgomery , aby urychlil modulární umocňování.
V této metodě je každé číslo spojeno s určitým obrázkem a všechny výpočty se provádějí s a na konci se provede přechod z obrázku na číslo.
Věta (Montgomery). Dovolit být coprime kladná celá čísla a . Potom pro jakékoli celé číslo je dělitelné , a . Navíc, jestliže , pak je rozdíl buď , nebo . |
Tato věta nám umožňuje vypočítat optimálním způsobem hodnotu pro některé vhodně zvolené .
Definice 1. Pro čísla , , , taková, že gcd a , nazýváme — zbytek čísla množství . |
Definice 2. Montgomeryho součin dvou celých čísel se nazývá číslo |
Věta (Montgomeryho pravidla). Nechte čísla , být coprime, a . Pak a |
To znamená, že pro názornost píšeme výraz pro umocňování :
Algoritmus (Produkt Montgomery). Nechť jsou dána celá čísla , kde je liché a . Tento algoritmus vrací . 1 [Funkce M Montgomery] { ; ; //V souladu s teorémem (Montgomery) . 2 [Správný výsledek] jestliže ; vrátit se ; } |
Algoritmus (Montgomeryho metoda umocňování). Nechť jsou čísla , , a zvolena stejným způsobem jako pro algoritmus (Montgomeryho součin). Tento algoritmus vrací . Binární bity označujeme . 1 [Výchozí nastavení] ; //Použití nějaké metody dělení se zbytkem. ; //Použití nějaké metody dělení se zbytkem. 2 [Schéma umocňování] pro { ; //pomocí algoritmu(Montgomery product) . jestliže ; } //Nyní se rovná . 3 [Konečný stupeň] ; |
V důsledku toho získáme obrázek, ze kterého můžeme získat konečný výsledek , a výraz se vypočítá předem. Pro součin dvou čísel bude výsledek vypadat takto
PříkladNechat , a chtít vynásobit dvě čísla a (tj. čtverec)
má obrázek
(pro kontrolu má obrázek )
Obrázky násobíme:
,
Provádíme přechod od obrazu násobení k požadovanému předobrazu
,
,
Podle toho prototyp
Tato metoda má výkonnostní výhodu oproti metodě opakované kvadratury a násobení, protože modulové násobení dvou čísel je mnohem rychlejší.
Tato metoda umožňuje zredukovat (pro velké hodnoty ) výpočet funkce na jedno násobení dvou čísel velikosti . Složitost Montgomeryho násobení se odhaduje jako .
Pro přehlednost zvažte metodu pro základ , to znamená, že budeme provádět výpočty v binární (nebo binární, protože ) číselné soustavě. Základ má plus v tom, že operace dělení by je posunuta doprava a násobení by je posunuta doleva.
Definice 1. Reprezentace nezáporného celého čísla v číselné soustavě se základem (nebo -árním zápisem čísla ) je nejkratší posloupnost celých čísel , nazývaná číslice položky, takže každá z těchto číslic splňuje nerovnost a rovnost |
Zvažte například binární algoritmus pro převzetí z produktu .
Algoritmus (binární algoritmus pro násobení a odebrání zbytku). Nechť kladná celá čísla jsou dána taková , že , . Tento algoritmus vrací výsledek složené operace . Předpokládáme, že binární reprezentace čísla je dána podle definice 1 , takže bity čísla jsou ve tvaru , a je nejvýznamnější bit. 1 [Výchozí nastavení] ; 2 [Převést všechny bity] pro { ; jestliže ; jestliže ; jestliže ; } vrátit se ; |
Tato metoda má jednu nevýhodu: nevyužívá výhody vícebitové aritmetiky dostupné na jakémkoli moderním počítači. Proto se obvykle používají velké základny .
Vyjádření tvaru má odhad výpočetní složitosti −