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
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)
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?
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 |;‑)
Jag följer upp denna gamla tråden. Jag testade att göra det Python, då gick det utan problem. Tack för input!