Tuesday, January 20, 2015

Pengertian Vigenere Chiper

Algoritma vigenere cipher termasuk kriptografi simetri klasik. Dan Termasuk ke dalam cipher abjad-majemuk (polyalpabetic substitution cipher). Pertamakali dipublikasikan oleh diplomat (sekaligus seorang kriptologis) Perancis, Blaise de Vigènere pada abad 16 (tahun 1586). Tetapi sebenarnya Giovan Batista Belaso telah menggambarkannya pertama kali pada tahun 1553 seperti ditulis di  dalam bukunya La Cifra del Sig. Giovan Batista Belaso. [2]
                Algoritma tersebut baru dikenal luas 200 tahun kemudian yang oleh penemunya cipher tersebut kemudian dinamakan vigenere cipher. Cipher ini  berhasil dipecahkan oleh Babbage dan Kasiski pada pertengahan Abad 19. Vigenere cipher digunakan oleh Tentara Konfiderasi (Confederate Army) pada Perang Sipil Amerika (American Civil war). [2]
                Vigenere cipher menggunakan bujursangkar vigenere (Vigenere Square) untuk melakukan enkripsi. Setiap baris di dalam bujursangkar menyatakan huruf-huruf cipherteks yang diperoleh dengan Caesar cipher. Namun pada jurnal ini kami menggunakan tabel ACII, dimana key-nya sebanyak 256 karakter. Sehingga hasil enkripsinya relatif lebih aman dibanding dengan vigenere alfabet biasa (26 karakter).
                Ciri-ciri kriptografi kunci simetri klasik:
  • Kunci enkripsi = kunci dekripsi
  • Algoritma kriptografinya disebut algoritma simetri
  • Contoh algoritma: caesar cipher, vigenere cipher, playfair cipher, DES, 2DES, 3DES, AES, RC2, RC3, RC4, RC5, RC6, Blowfish, GHOST, LOKI, IDEA, dll. [1]
public class VigenereClass {
// kelas enkripsi
        public String enkripsi(String keyword, String line) {
        String result = "";
        int offset;
        int j = 0, shift;
        for (int i = 0; i < line.length(); i++) {
            shift = ((int) keyword.charAt(j)) - 97;
            j++;
            j %= keyword.length();
            offset = ((int) line.charAt(i) + shift) % 256;
            result += (char) (offset);
        }
        return result;
    }
//kelas dekripsi
    public String dekripsi(String keyword, String line) {
        String result = "";
        int offset;
        int j = 0, shift;
        for (int i = 0; i < line.length(); i++) {
            shift = ((int) keyword.charAt(j)) - 97;
            j++;
            j %= keyword.length();
            offset = ((int) line.charAt(i) - shift) % 256;
            if (offset < 0) {
                offset += 256;
            }
            result += (char) (offset);
        }
        return result;
    }
}


Penjelasan source code:
NB: lihat nilai desimal karakter di tabel ASCII.
Diketahui plaintext “HANTAM MEREKA”, jika menggunakan nilai Z = 97 (berdasrkan source code), kalau di tabel ASCII yaitu huruf “a”. dan kuncinya “BOM”. Maka proses enkripsinya, sebagai berikut:
Rumus enkripsi: Ci = (Pi + K) mod 256
  • H = 72
-          shift = nilai desimal kunci (B) – 97
        = 66 - 97 = -31
-          Ci = (72 + shift) mod 256
            = (72 - 31) mod 256
            = 41
-          nilai desimal 41 di tabel ASCII mempunyai karakter  )
  • A = 65
-          shift = nilai desimal kunci (O) – 97
        = 79 - 97 = -18
-          Ci = (65 + shift) mod 256
            = (65 - 18) mod 256
            = 47
-          nilai desimal 47 di tabel ASCII mempunyai karakter  /
  • N = 78
-          shift = nilai desimal kunci (M) – 97
        = 77 - 97 = -20
-          Ci = (78 + shift) mod 256
            = (78 - 20) mod 256
            = 58
-          nilai desimal 58 di tabel ASCII mempunyai karakter  :
  • T = 84
-          shift = nilai desimal kunci (B) – 97
        = 66 - 97 = -31
-          Ci = (84 + shift) mod 256
            = (84 - 31) mod 256
            = 53
-          nilai desimal 53 di tabel ASCII mempunyai karakter  5
  • A = 65
-          shift = nilai desimal kunci (O) – 97
        = 79 - 97 = -18
-          Ci = (65 + shift) mod 256
            = (65 - 18) mod 256
            = 47
-          nilai desimal 47 di tabel ASCII mempunyai karakter  /
  • M = 77
-          shift = nilai desimal kunci (M) – 97
        = 77 - 97 = -20
-          Ci = (77 + shift) mod 256
            = (77 - 20) mod 256
            = 57
-          nilai desimal 57 di tabel ASCII mempunyai karakter  9
  • Spasi = 32
-          shift = nilai desimal kunci (B) – 97
        = 66 - 97 = -31
-          Ci = (32 + shift) mod 256
            = (32 - 31) mod 256
            = 1
-          nilai desimal 1 di tabel ASCII mempunyai karakter  SOH
  • M = 77
-          shift = nilai desimal kunci (O) – 97
        = 79 - 97 = -18
-          Ci = (77 + shift) mod 256
            = (77 - 18) mod 256
            = 59
-          nilai desimal 59 di tabel ASCII mempunyai karakter  ;
  • E = 69
-          shift = nilai desimal kunci (M) – 97
        = 77 - 97 = -20
-          Ci = (69 + shift) mod 256
            = (69 - 20) mod 256
            = 49
-          nilai desimal 49 di tabel ASCII mempunyai karakter  1
  • R = 82
-          shift = nilai desimal kunci (B) – 97
        = 66 - 97 = -31
-          Ci = (82 + shift) mod 256
            = (82 - 31) mod 256
            = 51
-          nilai desimal 51 di tabel ASCII mempunyai karakter  3
  • E = 69
-          shift = nilai desimal kunci (O) – 97
        = 79 - 97 = -18
-          Ci = (69 + shift) mod 256
            = (69 - 18) mod 256
            = 51
-          nilai desimal 51 di tabel ASCII mempunyai karakter  3
  • K = 75
-          shift = nilai desimal kunci (M) – 97
        = 77 - 97 = -20
-          Ci = (75 + shift) mod 256
            = (75 - 20) mod 256
            = 55
-          nilai desimal 49 di tabel ASCII mempunyai karakter  7
  • A = 65
-          shift = nilai desimal kunci (B) – 97
        = 66 - 97 = -31
-          Ci = (65 + shift) mod 256
            = (65 - 31) mod 256
            = 34
-          nilai desimal 34 di tabel ASCII mempunyai karakter  "


Jadi, Plaintext “HANTAM MEREKA” dengan kunci “BOM” mempunyai ciphertext )/:5/9;1337" . Untuk melakukan proses dekripsi, bisa menggunkan rumus dekripis vigenere cipher.

1 comment:

  1. sangat detail artikelnya, saya juga merangkum tulisan tentang vigenere, dapat dilihat disini http://arfianhidayat.com/algoritma-kriptografi-vigenere-cipher
    Ada DEMO PROGRAM-nya juga, semoga membantu

    ReplyDelete