901 likes | 1.85k Views
SIGURIA E TË DHËNAVE. KRIPTOGRAFIA STEGANOGRAFIA ENKRIPTIMI SIMETRIK ASIMETRIK NËNSHKRIMI DIGJITAL. Kriptografia–është shkenca matematiko-teknike për ruajtjen e sigurisë së shënimeve në aspekt të: Confidentiality(privacy)–fshehtësia
E N D
KRIPTOGRAFIA • STEGANOGRAFIA • ENKRIPTIMI SIMETRIK ASIMETRIK • NËNSHKRIMI DIGJITAL
Kriptografia–është shkenca matematiko-teknike për ruajtjen e sigurisë së shënimeve në aspekt të: • Confidentiality(privacy)–fshehtësia • Integrity–kompakte, çdo ndërrim detektohet • Authentication –verifikimi i partnerëve paraprocesit të komunikimit • Non-repudiation–jomohueshmëria
PËRDORIMI I KRIPTOGRAFISË KODI I CEZARIT KODI I XHEFERSONIT ENIGMA
Ngjarja zhvillohet në ShBA në fillim të viteve të ‘70 • NSA (US National Security Agency) • Në vitin 1972: ish NBS (National Bureau of • Standards) tani NIST (National Institute of • Standards and Technology) kanë parashtruar • kërkesat për mbrojtje të shënimeve • Të zhvillohet një algoritëm për enkriptim
KODI I CEZARIT (CAESAR’S CIPHER) MESAZHI (PLAINTEXT) A B C D E F G H I J K L M N O P Q R S T U V ë X Y Z MESAZHI I ENKRIPTUAR (CIPHERTEXT) B C D E F G H I J K L M N O P Q R S T U V ë X Y Z A
ÇELËSI TE KODI I CEZARIT ÇELËSI K=0 A B C D E F G H I J K L M N O P Q R S T U V ë X Y Z ÇELËSI K=1 B C D E F G H I J K L M N O P Q R S T U V ë X Y Z A ÇELËSI K=2 C D E F G H I J K L M N O P Q R S T U V ë X Y Z A B ………. DERI K=?
//Enkriptimi i mesazhit private static byte[] caesarEncipher(byte[] message,int shift) { byte[] m2=neË byte[message.length]; for (int i=0;i<message.length;i++) { m2[i]=(byte)((message[i]+shift)%256); } return m2; } //Dekriptimi i mesazhit. private static byte[] caesarDecipher(byte[] message,int shift) { byte[] m2=neË byte[message.length]; for (int i=0;i<message.length;i++) { m2[i]=(byte)((message[i]+(256-shift))%256); } return m2; }
TRANSPONIMI (ZHVENDOSJA) E SHIFRAVE
ZËVENDËSIMI - NDRYSHIMI TRANSPONIMI - RIPOZICIONIMI
FIVE AM LAST NITE IT ëAS CLOëNERY IVEA MF LTTTSOEANEëCëRSIIALNY
TRANSPONIMI I DYFISHTË LTTTSOEANEëCëRSIIALNY LTEEëILTSAëRINTONCSAY
FIVE AM F I V E A M FEIAVM F E I A V M 1 2 3 4 5 6 1 4 2 5 3 6
SHPËNDARJA DHE HUTIMI SHIFRAT E POLYBIUS –it
24 15 43 44 15 4221 44 14 45 34 52 JESTER 2 1 4 4 1 4 4 5 3 4 5 2
public class DesEncrypter { Cipher ecipher; Cipher dcipher; DesEncrypter(SecretKey key) { try { ecipher = Cipher.getInstance("DES"); dcipher = Cipher.getInstance("DES"); ecipher.init(Cipher.ENCRYPT_MODE, key); dcipher.init(Cipher.DECRYPT_MODE, key); } catch (javax.crypto.NoSuchPaddingException e) { } catch (java.security.NoSuchAlgorithmException e) { } catch (java.security.InvalidKeyException e) { } }
public String encrypt(String str) { try { // Encode the string into bytes using utf-8 byte[] utf8 = str.getBytes("UTF8"); // Encrypt byte[] enc = ecipher.doFinal(utf8); // Encode bytes to base64 to get a string return neë sun.misc.BASE64Encoder().encode(enc); } catch (javax.crypto.BadPaddingException e) { } catch (IllegalBlockSizeException e) { } catch (UnsupportedEncodingException e) { } catch (java.io.IOException e) { } return null; }
public String decrypt(String str) { try { // Decode base64 to get bytes byte[] dec = neë sun.misc.BASE64Decoder().decodeBuffer(str); // Decrypt byte[] utf8 = dcipher.doFinal(dec); // Decode using utf-8 return neë String(utf8, "UTF8"); } catch (javax.crypto.BadPaddingException e) { } catch (IllegalBlockSizeException e) { } catch (UnsupportedEncodingException e) { } catch (java.io.IOException e) { } return null; } }
try { // Generate a temporary key. In practice, you ëould save this key. // See also e464 Encrypting ëith DES Using a Pass Phrase. SecretKey key = KeyGenerator.getInstance("DES").generateKey(); // Create encrypter/decrypter class DesEncrypter encrypter = neë DesEncrypter(key); // Encrypt String encrypted = encrypter.encrypt("Don't tell anybody!"); // Decrypt String decrypted = encrypter.decrypt(encrypted); } catch (Exception e) {}
ENKODIMI MATRICOR AX=B C ≡ AP + B (mod n) P - POROSIA C – POROSIA E ENKRIPTUAR B=0 → ENKODIMI I HILLIT (HILL CIPHERS)
AP + B ≡ C (mod n) AP ≡ C - B (mod n) P ≡ IP ≡ A`AP ≡ A`(C - B) (mod n). A` - MATRICA INVERSE E A
Ekzistenca e A` det(A)= 0 Për A (mod 26), A` ekzston atëherë dhe vetëm atëherë kur GCD(det(A),26)=1. GCD është algoritmi i Euklidit për gjetjen e pjestuesit më të madh të përbashkët
public class GCD{public int GCD(int x,int y){ if (x<y) { int temp=x; x=y; y=temp; } if (x%y==0) { return y; } else { return GCD(y,x%y); }}}
public static int[ ][ ] shumezo(int[ ][ ] m1,int[ ][ ] m2) { int[][] c=neë int[m1.length][m2[0].length]; if (m1[0].length != m2.length) { System.out.println("Gabim ne rendin e matricave”); System.exit(0); }else { for (int i=0; i!=m1.length; i++) for (int j=0; j!=m2[0].length; j++) for (int k=0; k!=m2.length; k++) c[i][j]=c[i][j]+m1[i][k]*m2[k][j]; } return c;}
public static int[][] shkruaj(int a,int b) { int[][] z=neë int[a][b];for (int i=0; i<a; i++) { for (int j=0; j<b; j++) { String f=JOptionPane.shoëInputDialog("Jepni vleren e m["+i+"]["+j+"]"); z[i][j]=neë Integer(f).intValue(); } } return z; }
SHEMBULL THE END TH EE ND TH= , EE= , ND=