4 svar
269 visningar
WilleWillesson är nöjd med hjälpen
WilleWillesson 19 – Fd. Medlem
Postad: 27 apr 2018 12:42

Fel i RSA-kryptering

Hej, jag är osäker på om detta hör hemma i "Programmering" eller i "Matematik", det är lite av båda.

Jag försöker förstå RSA-kryptering. Jag har läst hur man gör, men någonstans blir det fel. Jag använder MatLab:

p=13, q=7, N=p*q  %ger N=91

fi=(p-1)*(q-1)   % ger fi=72

e=5   %Uppfyller kravet gcd(fi,e)=1 (största gemensamma delare)  och 0<e<fi

d=29  %Uppfyller kravet e*d har resttermen 1 vid division med fi ( mod(e*d,fi)=1 )

 

Jag vill nu kryptera talet X, säg X=11. Det krypterade talet kallar jag Y:

Y=mod(X^e, N)   %ger Y=72

 

MEN, sen ska jag avkoda detta enligt

 

X=mod(Y^d,N), men detta blir 21...  Det ska ju bli 11. Var är felet? Tacksam för hjälp

Lindehaven 820 – Lärare
Postad: 27 apr 2018 14:13

Har inte Matlab installerad men i Python blir X==11:

import math
p=13
q=7
N=p*q
fi=(p-1)*(q-1)
e=5
d=29
assert e>0
assert e<fi
assert math.gcd(fi,e)==1
assert (e*d)%fi==1
X=11
Y=(X**e)%N
X=(Y**d)%N
print(X)

WilleWillesson 19 – Fd. Medlem
Postad: 27 apr 2018 15:21

Aha, du verkar ha hjälpt mig lite på traven här. Det förefaller vara ett allmänt problem att Matlab inte riktigt klarar av att lösa modulos när talen börjar bli stora. Trist. Det går bra på Windows calculator. Suck. Någon som vet då hur man ska komma runt detta i Matlab?

Lindehaven 820 – Lärare
Postad: 27 apr 2018 19:09

Det var länge sedan jag använde Matlab och har inte stött på problemet vad jag minns. Om du måste använda Matlab så kanske denna artikel hjälper. Eller prova i Scilab. Eller använd Python |;‑)

WilleWillesson 19 – Fd. Medlem
Postad: 29 apr 2019 11:34

Jag följer upp denna gamla tråden. Jag testade att göra det Python, då gick det utan problem. Tack för input!

Svara Avbryt
Close