Studieretningsprojekt/-opgave (SRP/SRO)
RSA kryptering
Hej
Jeg skal kryptere navnet CHRISTINA udfra RSA-kryptering.
Jeg har fået opgivet primtallene p=7 og q=11 n=77 og k=60, de to sidste har jeg selv regnet frem til.
Jeg kender godt til begreberne modulo og ved det er det jeg skal anvende, men alligevel, går det ikke godt når jeg forsøger....
På forhånd tak
Svar #2
10. december 2010 af 3082 (Slettet)
Jeg har først givet alle bogstaverne tal efter deres plads i alfabetet altså C = 03 osv. Derefter opløfter jeg det i 17 og dividere med 77, sådan har jeg i hvert fald forstået jeg skulle gøre..
Resultatet jeg ender ud med er 1677144,974 og det resultat ved jeg ikke hvad jeg skal gøre ved?
Svar #3
10. december 2010 af PeterValberg
Det går galt for dig, da k og tallet (p-1)·(q-1) skal være indbyrdes primiske.
Hvis du vælger k=60 og (7-1)(11-1)=60 vil det betyde, at de ikke er indbyrdes primiske.
Du bliver nødt til at vælge en anden værdi for k (fx 29), - jeg har checket 60 og 29 er indbyrdes primiske,
da gcd(60,13) = 1 (gcd "greatest common divisor", altså største fælles divisor (sfd))
primtallene: p = 7 og q = 11 bruges til at beregne: N = p·q = 77
derudover vælges endnu et tal k, - i dette tilfælde k = 13
bemærk, at k og tallet (p-1)·(q-1) skal være indbyrdes primiske...... checket :-)
kryptering af Christina, hvor a=1, b=2, c=3 osv.....
KRYPTERINGSALGORITME
C = Mk (mod N)
C er kodeteksten (ciphertext)
M er klarteksten (messagetext)
kryptering af klartekstbogstavet C (talværdi 03)
C(iphertext) = Mk (mod N)
CC = 329 (mod 77) = 26
mod(ulo) beregner resten ved heltalsdivision, - fx 7 = 1 (mod 3) da 7:3 = 2 rest 1
Når man skal regne den anden vej (dekryptere), hedder algoritmen:
M = Cd (mod N)
M = 2629 (mod 77)
M = 3
som er lig med C (03) på samme måde kan de øvrige bogstaver i CHRISTINA krypteres og dekrypteres)
hvor d beregnes som (en lidt langhåret beregning):
k·d = 1 (mod (p-1)(q-1))
29·d = 1 (mod 6·10)
29·d = 1 (mod 60)
d = 29
(d bestemmes med Euklids algoritme)
Svar #4
11. december 2010 af PeterValberg
glemte at sige, at det ikke er nemt at bestemme værdien for d
du skal bruge Euklids algoritme.
har lavet et regneark til EXCEL, der kan klare det...
Indtast k og tallet (p-1)(q-1) i de to gule felter, så klarer arket resten...
(test om de er indbyrdes primiske og beregning af d, hvis der er én)
Svar #6
11. december 2010 af PeterValberg
Nu har vi jo godt nok bevæget os ind i verdenen af hemmeligholdelse, - er det derfor, du ikke bare fortæller, hvor du mener, jeg har lavet en fejl ? :-)
Svar #7
11. december 2010 af PeterValberg
Kan det være den her:
i #3 skrev jeg
"....Du bliver nødt til at vælge en anden værdi for k (fx 29), - jeg har checket 60 og 29 er indbyrdes primiske, da gcd(60,13) = 1 (gcd "greatest common divisor", altså største fælles divisor (sfd))....."
der skal stå gcd(60,29) det er udelukkende en tastefejl, beregningerne "holder"
Svar #8
11. december 2010 af 3082 (Slettet)
Tak for hjælpen, jeg tænkte på om det betyder noget at den offentlige nøgle (k,m) =(17,77)?
Svar #9
11. december 2010 af PeterValberg
du mener vist (k,N) altså (17, 77)
N er produktet af de to (meget) hemmelige primtal p og q, - i dit oprindelige indlæg havde du valgt 7 og 11
k er et selvvalgt (prim)tal
Tilsammen er det den offentlige nøgle, der bruges til at kryptere den klartekst, man gerne vil sende til nøglens ejer.
C = Mk (mod N) (hvor C er kodeteksten og M er klarteksten)
Med hensyn til dit spørgsmål i #8
hvordan er du kommet frem til N = 77 ?
N er jo beregnet ud fra dine to valge primtal p og q: N = p·q
Svar #10
11. december 2010 af 3082 (Slettet)
77 er kommet frem til ved at bruge mine primtal p*q = 7*11=77
Svar #12
11. december 2010 af H2OH2O (Slettet)
Ved du, hvad der er værre end at lave fejl? - At man ikke kan finde dem.
Ved du hvad der er endnu værre? - At man benægter det.
Svar #13
11. december 2010 af PeterValberg
#12 jeg har altså opdaget fejlen, det vil jeg da gerne indrømme, - det der fik mig op i "det røde felt", var den lidt for oversmarte selvfede måde, hvorpå du hoverede i aftes i stedet for at bidrage positivt til indlægget, - det handler jo ikke om overherredømmet mellem nørderne i forhold til at vide mest, men tværtimod om at hjælpe dem, der bruger tid på at oprette indlæg på dette forum i forventning om, at de får de rigtige svar, ikke sandt ?
skulle vi så ikke i fællesskab prøve at hjælpe 3082 til det rigtige svar ?
Peter Valberg
Svar #14
11. december 2010 af PeterValberg
#11 som du sikkert kan se af den parallelle diskussion her i dit indlæg, så har jeg regnet lidt forkert,- hvilket jeg har opdaget og er ved at rette op på...
Svar #15
11. december 2010 af H2OH2O (Slettet)
Det var ment lidt sjovt Peter. No hard feelings.
Dit citat af Sokrates.. Er det korrekt eller misbrug af ham ?
Svar #16
11. december 2010 af PeterValberg
#15 okay H2OH2O godt ord igen, - fedt citat forøvrigt, som du sikkert hurtigt kan udlede, så kendte jeg det ikke:-)
Svar #17
11. december 2010 af H2OH2O (Slettet)
#16 Jamen Sokrates sagde: "Jeg ved, at jeg ved, at jeg intet ved." - På din profil står der noget helt anderledes ..
Svar #19
11. december 2010 af PeterValberg
#18 ja, det må være derfor :-)
Til 3082
Nu skulle der endelig være styr på krypteringen :-)
Der vælges to primtal p = 7 og q = 11 (som skal holdes hemmelige)
N beregnes som N = p·q = 77
Derudover vælges et tal k, i dette tilfælde k = 29
k og tallet (p-1)(q-1) = 60 skal være indbyrdes primiske: gcd(77,60) = 1 OKAY
N og k er den offentlige nøgle.
Til dekryptering skal du bruge et hemmeligt tal d som bestemmes således:
k·d = 1 (mod (p-1)(q-1))
Dette bestemmes lettest med Euklids algoritme
det EXCEL ark som jeg uploader med dette svar kan klare det
det er en forbedrede version af den første :-)
Kryptering af fx B=02
C = Mk (mod N) = 229 (mod 77) = 39
Dekryptering af 39
M = Cd (mod N) = 3929 (mod 77) = 2
Så skulle det vist være i orden, hvad siger du H2OH2O ?
Svar #20
11. december 2010 af 3082 (Slettet)
Tusind tak Peter:), men den offentlige nøgle jeg har fået opgivet stå der (k,m)=(17,77) skal jeg ikke anvende 17 til noget?
