Hoe bereken je:
6843 (mod 341) d.m.v. binair rekenen?thomas
4-1-2005
De truc voor snelle exacte machtsverheffing modulo m is de volgende:
Bekijk eens je voorbeeld:
43=1+2+8+32, dus 6843=68×682×688×6832.
Hoe kom je nu aan die 1+2+8+32?
Wel de binaire schrijfwijze van 43=101011!
De berekening verloopt nu als volgt:
681 mod 314=68
682 mod 341=68·68 mod 341=4624 mod 341=191
684 mod 341=191·191 mod 341=36481 mod 341=335
688 mod 341=335·335 mod 341=112225 mod 341=36
6816 mod 341=36·36 mod 341=1296 mod 341=273
6832 mod 341=273·273 mod 341=74529 mod 341=191.
Dus 6843 mod 341=68·191·36·191 mod 341=316.
Het definitieve algoritme ziet er dan zo uit:
(de binaire schrijfwijze van de exponent wordt al doende bepaald!)//Bereken g^e mod m:Deze berekening heet in de praktijk meestal modpow(g,e,m) of powmod(g,e,m) of modular_exponentiation(g,e,m)
resultaat:=1
herhaal
als (e is oneven) dan resultaat:=resultaat·g mod m
e:=e div 2
//div is de gehele deling!
g:=g·g mod m
totdat e=1
resultaat:=resultaat·g mod m
//einde algoritme
hk
4-1-2005
#32000 - Cryptografie - Leerling bovenbouw havo-vwo