[Cryptography] Pengenalan Enkripsi Kode Hill di linux backtrack

Pendahuluan
Kode Hill ditemukan oleh Lester S. Hill pada tahun 1929. Kode Hill termasuk salah satu system kripto polialfabetik, yang berarti setiap karakter alphabet bisa dipetakan ke lebih dari satu macam karakter.

Pembahasan
Misalkan m adalah bilangan bulat positif, dan Plaintext = Chiper = (Z26)m. Ide dari kode Hill adalah dengan mengambil m kombinasi linear dari m karakter alphabet dalam satu elemen teks-asli sehingga dihasilkan m alphabet karakter dalam satu elemen teks-asli.
Misalkan m=2 maka dapat ditulis suatu elemen teks-asli sebagai x = (x1, x2) dan suatu elemen teks kode sebagai y = (y1, y2). Di sini y1, y2 adalah kombinasi linear dari x1 dan x2. Misalkan:
y1 = 11×1 + 3×2
y2 = 8×1 + 7×2
dapat ditulis dalam notasi matrix sbb:
(y1,y2)=(x1,x2)
K:
|11 8|
|3 7|

Secara umum dengan menggunakan matriks K m x m sebagai kunci.
Mungkin agak kurang paham ya? Ok supaya lebih paham langsung kasih contoh enkripsinya.
Kita gunakan Key yang diatas yaitu:
|11 8|
|3 7|

Dan dengan plain text g4pt3k, maka menjadi G=6, 4=4, P=15, T=19, 3=3, K=10. (A=0,B=1,… Z=25)
Maka lakukan operasi perkalian matriks, yaitu baris * kolom.
Dengan menggunakan matriks 2 x 2, maka:
G4 -> (6, 4)|11 8|
• |3 7|
= ((6*11)+(4*3) , (6*8)+(4*7)) = (66+12 , 48+28)
= (78 , 76) mod 26 = (0 , 24) => AY

PT -> (15, 19)|11 8|
• |3 7|
= (165+57 , 120+133) = (222 , 253) mod 26 = (14 , 19) => OT

3K -> (3, 10)|11 8|
• |3 7|
= (33+30 , 24+70) = (63 , 94) mod 26 = (11 , 16) => LQ

Dengan demikian, hasil enkripsi G4PT3K menggunakan K |11 8| adalah AYOTLQ
• |3 7|

Plain Text : G4PT3K
Chiper Text : AYOTLQ
Key : |11 8|
• |3 7|

——– Dekripsi ——–
Untuk dekripsinya, hanya bisa dilakukan jika matriks dari Key memiliki inversi, dengan catatan suatu matriks memiliki inversi hanya jika determinannya tidak nol. Contoh untuk mendapatkan inversnya, maka:
|11 8| |a1 a2| = |1 0|
|3 7| |a3 a4| = |0 1|

11*a1 + 8*a3 , 11*a2 + 8*a4 = 1 0
3*a1 + 7*a3 , 3*a2 + 7*a4 = 0 1

dari perhitungan diatas, menghasilkan invers dari matriks Key:
|7 18|
|23 11|

jadi untuk dekripsinya:
AY => 0, 24
(0, 24)|7 18|
• |23 11|
= (0*7 + 24*23 , 0*18 + 24*11) = (552 , 264) mod 26 = (6 , 4) => G4

OT => 14, 19
(14, 19)|7 18|
• |23 11|
= (14*7 + 19*23 , 14*18 + 19*11) = (535, 461) mod 26 = (15 , 19) => PT

LQ => 11, 16
(11, 16)|7 18|
• |23 11|
= (11*7 + 16*23 , 11*18 + 16*11) = (445 , 374) mod 26 = (3 , 10) => 3K

Sebagai tambahan, berikut source code untuk enkripsi kode hill dengan bahasa python:
#!/usr/bin/python
# hill c0de encryption algorithm
# by:5ynL0rd
# thanks to g4pt3k

import string

text = string.ascii_lowercase
numeric = string.digits
cchar = 0
cmatrix = 0
listplain = []
result = []
plaintext = raw_input(“plain text:”)
print ”’
format key = [a b]
[c d]
”’
key11 = input(“a = “)
key12 = input(“b = “)
key21 = input(“c = “)
key22 = input(“d = “)

while cchar < len(plaintext):
num = plaintext[cchar]
try:
listplain.append(text.index(num))
except:
listplain.append(numeric.index(num))
cchar += 1

while cmatrix < len(plaintext):
try:
res1 = listplain[cmatrix] * key11
res2 = listplain[cmatrix+1] * key21
res3 = listplain[cmatrix] * key12
res4 = listplain[cmatrix+1] * key22
result.append(text[(res1+res2)%26])
result.append(text[(res3+res4)%26])
except:
pass
cmatrix += 2
print “plain text : %s”%plaintext
print “cipher text : %s”%string.join(result,””)

Contoh output:
plain text:g4pt3k

format key = [a b]
[c d]

a = 11
b = 8
c = 3
d = 7
plain text : g4pt3k
cipher text : ayotlq

Nah kembali lagi kan plain-textnya..
Sekian dulu, semoga bisa dipahami dan menambah curiosity to learn about cryptography.. ;)

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: