4 svar
96 visningar
WilleWillesson är nöjd med hjälpen!
WilleWillesson 19
Postad: 27 apr 2018

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 206
Postad: 27 apr 2018

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
Postad: 27 apr 2018

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 206
Postad: 27 apr 2018

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
Postad: 29 apr 2019

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