2015. február 6., péntek

Top Secret Encryption Kongruentia

Egy példa a RSA titkosításra: p=7, q=13, Modulus N=p*q  azaz N=91 Euler-féle függvény érték   N-re: X(N)=(7-1)(13-1)  Feltétel: 1<e<X(N) & e and X(N) LNKO 1. azaz LNKO(e,X(N))=1.
"e" A nyilvános kulcs kitevője. Kongruencia d-re  de=1(mod X(N))  vagyis de=1+kX(N) bármely k pozitív egészre. d lesz a titkos kulcs. A nyilvános kulcs N modulus és e kitevő A titkos kulcs N modulus és d kitevő e & X között relazív prímkapcsolat biztosítja a de=1+kX(N) diofantoszi egyenletet. Euklideszi algoritmussal megkapható!  Például: e= 2  16. hatványa=65537
Bankkártyákon e értéke 3 vagy 5 ami a feltörést is leegyszerűsíti!
Elküldöm a nyilvános kulcsot, N-t és e-t. A küldendő szöveget számokká alakítom például egy mátrix segítségével. Úgy darabolom fel, hogy az értékek kisebbek legyenek mint N.
A kódolt szöveg= M e hatványa mod N
A vevő d-t ismerve visszafejti a küldött számokat c-ből
m=c d hatványa mod N így m segítségével visszakapom a számokat, majd a mátrixot használva szöveggé dekódolom. C d hatványa = m (mod N) Mivel a p-1 hatványa = 1 (mod p)
Példa:
p=3 q= 7
N 7*3=21
X(N)=(3-1)*(7-1)=12
e=5
de=1 (mod X(n))
5*d=(12*7)+12
85/5=d
d=17

m=121314
c=121314 5. hatványa mod 21

m=c 17. hatványa mod 21




 
 Caesar-kód vagy Caesar-rejtjel javaban 
public class Caesar {
 public static String caesarCode(String input, char offset) {
  char[] out = input.toUpperCase().toCharArray();
  for (int i = 0; i < out.length; i++) {
   out[i] += offset - 'A';
   if (out[i] > 'Z')
    out[i] -= 'Z' - 'A' + 1;
  }
  return new String(out);
 }
}
 
 

Nincsenek megjegyzések:

Megjegyzés küldése