• Tidak ada hasil yang ditemukan

Publikasi (SeminarJurnal, dll) Waktu Publikasi - Hill Cipher pada Skema Shamir's Three Pass Protocol

N/A
N/A
Protected

Academic year: 2019

Membagikan "Publikasi (SeminarJurnal, dll) Waktu Publikasi - Hill Cipher pada Skema Shamir's Three Pass Protocol"

Copied!
7
0
0

Teks penuh

(1)

LAMPIRAN-1

DAFTAR PUBLIKASI ILMIAH PENULIS (TESIS)

No

Judul Artikel

Penulis

Publikasi

(Seminar/Jurnal,

dll)

Waktu

Publikasi

Tempat

1

Hill Cipher

Pada Shamir’s

Three Pass

Protocol

Hasdiana,

Muhammad

Zarlis,

Rahmat

Widia

Sembiring,

Jamaludin

Procceding

Internasional

Conference On

Multidisiplinary

Research

16 – 18

Oktober

2014

Medan

2

Penerapan

Hybrid

Cryptosystem

Melalui

Kombinasi

Hill cipher

,

Vigenère

Dan

Rsa

Jamaludin,

Muhammad

Zarlis,

Rahmat

Widia

Sembiring,

Hasdiana

Procceding

Internasional

Conference On

Multidisiplinary

Research

16 – 18

Oktober

2014

Medan

3

4

(2)

LAMPIRAN-2

Listing Program

def isInverse(det): x = MOD

y = 1 while (1): y = x % det

'print("X = ", x, " Det = ", det, "Y = ", y)' if y == 0 and det == 1:

return 1

elif y == 0 and det != 1: return 0

x = det det = y

PT =

"INDONESIATANAHAIRBETAPUSA KAABADINANJAYAINDONESIASEJ AKDULUKALASELALUDIPUJAPUJA BANGSADISANATEMPATLAHIRBET ADIBUAIDIBESARKANBUNDATEMP ATBERLINDUNGDIHARITUATEMPA TAKHIRMENUTUPMATA"

pPT = len(PT) print("Plainteks :") print(PT)

print("panjang plainteks =", len(PT))

if len(PT) % 9 != 0: sisa = 9 - len(PT) % 9 'print("sisa :", sisa)' for i in range(sisa):

PT = PT + "Z" else:

sisa = 0

'print("sisa :", sisa)'

'print("Plainteks Hill Cipher :", PT)' print("\n")

M = []

JB = int(len(PT)/9) for j in range(JB):

M1 = []

for i in range(3): M0 = []

M0.append(ord(PT[j*9+i*3])-65) M0.append(ord(PT[j*9+i*3+1])-65) M0.append(ord(PT[j*9+i*3+2])-65) M1.append(M0)

M.append(M1)

'print("Matriks Plainteks Hill Cipher:")' for j in range(JB):

for i in M[j]: 'print(i)'

'print("\n")'

DetA = (KA[0][0] * ((KA[1][1]*KA[2][2]) -(KA[1][2]*KA[2][1]))) - \

(KA[0][1] * ((KA[1][0]*KA[2][2]) -(KA[1][2]*KA[2][0]))) + \

(KA[0][2] * ((KA[1][0]*KA[2][1]) -(KA[1][1]*KA[2][0])))

DetA = DetA % MOD 'print("Matriks Kunci A:")'

for i in KA: 'print(i)' 'print("\n")'

'print("Determinan :", DetA)' i = 1

while ((i * DetA) % MOD) != 1: i = i + 1

InvModulo = i

'print("Inverse Modulo = %i\n" % i)'

M11 = ((KA[1][1]*KA[2][2]) -(KA[1][2]*KA[2][1])) % MOD M12 = ((KA[1][0]*KA[2][2])

-(KA[1][2]*KA[2][0])) % MOD M13 = ((KA[1][0]*KA[2][1])

-(KA[1][1]*KA[2][0])) % MOD M21 = ((KA[0][1]*KA[2][2])

-(KA[0][2]*KA[2][1])) % MOD M22 = ((KA[0][0]*KA[2][2])

-(KA[0][2]*KA[2][0])) % MOD M23 = ((KA[0][0]*KA[2][1])

-(KA[0][1]*KA[2][0])) % MOD M31 = ((KA[0][1]*KA[1][2])

-(KA[0][2]*KA[1][1])) % MOD M32 = ((KA[0][0]*KA[1][2])

-(KA[0][2]*KA[1][0])) % MOD M33 = ((KA[0][0]*KA[1][1])

-(KA[0][1]*KA[1][0])) % MOD

Minor = [[M11,M12,M13], [M21,M22,M23], [M31,M32,M33]]

Kofaktor = [[M11*1,M12*-1,M13*1], [M21*-1,M22*1,M23*-1], [M31*1,M32*-1,M33*1]]

AdjA = [[Kofaktor[0][0], Kofaktor[1][0], Kofaktor[2][0]],

[Kofaktor[0][1], Kofaktor[1][1], Kofaktor[2][1]],

(3)

KA_I = [[InvModulo*AdjA[0][0] % MOD, InvModulo*AdjA[0][1] % MOD, InvModulo*AdjA[0][2] % MOD], [InvModulo*AdjA[1][0] % MOD,

InvModulo*AdjA[1][1] % MOD, InvModulo*AdjA[1][2] % MOD], [InvModulo*AdjA[2][0] % MOD,

InvModulo*AdjA[2][1] % MOD, InvModulo*AdjA[2][2] % MOD]]

'print("Matriks Kofaktor:")' for i in range(3):

'print(Kofaktor[i])' 'print("\n")'

'print("Adjoint Matrix:")' for i in range(3):

'print(AdjA[i])' 'print("\n")'

'print("Inverse Matriks Kunci A:")' for i in range(3):

'print(KA_I[i])' AkhirInvA = time.time()

'print("\nWaktu Eksekusi Invers A = ", AkhirInvA - AwalInvA, " Detik")' 'print("\n")'

inv = 0

while (inv == 0): KB = []

for i in range(3): M0 = []

M0.append(random.randint(0, MOD)) M0.append(random.randint(0, MOD)) M0.append(random.randint(0, MOD)) KB.append(M0)

(KB[0][1] * ((KB[1][0]*KB[2][2]) -(KB[1][2]*KB[2][0]))) + \

(KB[0][2] * ((KB[1][0]*KB[2][1]) -(KB[1][1]*KB[2][0])))

DetB = DetB % MOD 'print("Matriks Kunci B:")'

for i in KB: 'print(i)' 'print("\n")'

'print("Determinan :", DetB)' i = 1

while ((i * DetB) % MOD) != 1: i = i + 1

InvModulo = i

'print("Inverse Modulo = %i\n" % i)'

M11 = ((KB[1][1]*KB[2][2]) -(KB[1][2]*KB[2][1])) % MOD M12 = ((KB[1][0]*KB[2][2])

-(KB[1][2]*KB[2][0])) % MOD M13 = ((KB[1][0]*KB[2][1])

-(KB[1][1]*KB[2][0])) % MOD M21 = ((KB[0][1]*KB[2][2])

-(KB[0][2]*KB[2][1])) % MOD M22 = ((KB[0][0]*KB[2][2])

-(KB[0][2]*KB[2][0])) % MOD M23 = ((KB[0][0]*KB[2][1])

-(KB[0][1]*KB[2][0])) % MOD M31 = ((KB[0][1]*KB[1][2])

-(KB[0][2]*KB[1][1])) % MOD M32 = ((KB[0][0]*KB[1][2])

-(KB[0][2]*KB[1][0])) % MOD M33 = ((KB[0][0]*KB[1][1])

-(KB[0][1]*KB[1][0])) % MOD

Minor = [[M11,M12,M13], [M21,M22,M23], [M31,M32,M33]]

Kofaktor = [[M11*1,M12*-1,M13*1], [M21*-1,M22*1,M23*-1], [M31*1,M32*-1,M33*1]]

AdjB = [[Kofaktor[0][0], Kofaktor[1][0], Kofaktor[2][0]],

[Kofaktor[0][1], Kofaktor[1][1], Kofaktor[2][1]],

[Kofaktor[0][2], Kofaktor[1][2], Kofaktor[2][2]]]

KB_I = [[InvModulo*AdjB[0][0] % MOD, InvModulo*AdjB[0][1] % MOD, InvModulo*AdjB[0][2] % MOD], [InvModulo*AdjB[1][0] % MOD,

InvModulo*AdjB[1][1] % MOD, InvModulo*AdjB[1][2] % MOD], [InvModulo*AdjB[2][0] % MOD,

InvModulo*AdjB[2][1] % MOD, InvModulo*AdjB[2][2] % MOD]]

'print("Matriks Kofaktor:")' for i in range(3):

'print(Kofaktor[i])' 'print("\n")'

'print("Adjoint Matrix:")' for i in range(3):

'print(AdjB[i])' 'print("\n")'

'print("Inverse Matriks Kunci B:")' for i in range(3):

'print(KB_I[i])'

(4)

for j in range(JB): C0 = []

C0.append(((M[j][0][0] * KA[0][0]) + (M[j][0][1] * KA[1][0]) + (M[j][0][2] * KA[2][0])) % MOD)

C0.append(((M[j][0][0] * KA[0][1]) + (M[j][0][1] * KA[1][1]) + (M[j][0][2] * KA[2][1])) % MOD)

C0.append(((M[j][0][0] * KA[0][2]) + (M[j][0][1] * KA[1][2]) + (M[j][0][2] * KA[2][2])) % MOD)

C1.append(C0)

C0=[]

C0.append(((M[j][1][0] * KA[0][0]) + (M[j][1][1] * KA[1][0]) + (M[j][1][2] * KA[2][0])) % MOD)

C0.append(((M[j][1][0] * KA[0][1]) + (M[j][1][1] * KA[1][1]) + (M[j][1][2] * KA[2][1])) % MOD)

C0.append(((M[j][1][0] * KA[0][2]) + (M[j][1][1] * KA[1][2]) + (M[j][1][2] * KA[2][2])) % MOD)

C1.append(C0)

C0=[]

C0.append(((M[j][2][0] * KA[0][0]) + (M[j][2][1] * KA[1][0]) + (M[j][2][2] * KA[2][0])) % MOD)

C0.append(((M[j][2][0] * KA[0][1]) + (M[j][2][1] * KA[1][1]) + (M[j][2][2] * KA[2][1])) % MOD)

C0.append(((M[j][2][0] * KA[0][2]) + (M[j][2][1] * KA[1][2]) + (M[j][2][2] * KA[2][2])) % MOD)

C1.append(C0)

C1 = []

'print("Matriks CipherText 1:")' for j in range(JB):

for i in C[j]: 'print(i)' 'print("\n")' C1T =[] C1TT = []

for j in range(JB):

C1TTT = []

'print("Matriks CipherText 1 Transpose:")' print("Cipherteks-1:")

print(DT)

AkhirC1 = time.time()

print("\nWaktu Eksekusi Cipherteks-1 = ", AkhirC1 - AwalC1, " Detik")

'print("\n")' for j in range(JB):

C1 = []

C1.append(((KB[0][0] * C[j][0][0]) + (KB[0][1] * C[j][1][0]) + (KB[0][2] * C[j][2][0])) % MOD)

C1.append(((KB[0][0] * C[j][0][1]) + (KB[0][1] * C[j][1][1]) + (KB[0][2] * C[j][2][1])) % MOD)

C1.append(((KB[0][0] * C[j][0][2]) + (KB[0][1] * C[j][1][2]) + (KB[0][2] * C[j][2][2])) % MOD)

C2.append(C1)

C1=[]

C1.append(((KB[1][0] * C[j][0][0]) + (KB[1][1] * C[j][1][0]) + (KB[1][2] * C[j][2][0])) % MOD)

C1.append(((KB[1][0] * C[j][0][1]) + (KB[1][1] * C[j][1][1]) + (KB[1][2] * C[j][2][1])) % MOD)

C1.append(((KB[1][0] * C[j][0][2]) + (KB[1][1] * C[j][1][2]) + (KB[1][2] * C[j][2][2])) % MOD)

C2.append(C1)

C1=[]

C1.append(((KB[2][0] * C[j][0][0]) + (KB[2][1] * C[j][1][0]) + (KB[2][2] * C[j][2][0])) % MOD)

C1.append(((KB[2][0] * C[j][0][1]) + (KB[2][1] * C[j][1][1]) + (KB[2][2] * C[j][2][1])) % MOD)

C1.append(((KB[2][0] * C[j][0][2]) + (KB[2][1] * C[j][1][2]) + (KB[2][2] * C[j][2][2])) % MOD)

C2.append(C1) C0.append(C2) C2 = []

(5)

for i in C0[j]: 'print(i)' 'print("\n")' C2T =[] C2TT = []

for j in range(JB):

C2TTT = []

C2TTT.append((C0[j][0][0])) C2TTT.append((C0[j][1][0])) C2TTT.append((C0[j][2][0])) C2TT.append(C2TTT) C2TTT = []

C2TTT.append((C0[j][0][1])) C2TTT.append((C0[j][1][1])) C2TTT.append((C0[j][2][1])) C2TT.append(C2TTT) C2TTT = []

C2TTT.append((C0[j][0][2])) C2TTT.append((C0[j][1][2])) C2TTT.append((C0[j][2][2])) C2TT.append(C2TTT) C2T.append(C2TT) C2TT = []

print("\n")

'print("Matriks CipherText 2 Transpose:")' DT = ""

for j in range(JB): for i in C2T[j]:

'print(i)'

DT = DT + chr((i[0] + 65)) + chr((i[1] + 65)) + chr((i[2] + 65))

'print("\n")'

print("Cipherteks-2:") print(DT)

AkhirC2 = time.time()

print("\nWaktu Eksekusi Cipherteks-2 = ", AkhirC2 - AwalC2, " Detik")

print("\n")

for j in range(JB):

C2 = []

C2.append(((C0[j][0][0] * KA_I[0][0]) + (C0[j][0][1] * KA_I[1][0]) + (C0[j][0][2] * KA_I[2][0])) % MOD)

C2.append(((C0[j][0][0] * KA_I[0][1]) + (C0[j][0][1] * KA_I[1][1]) + (C0[j][0][2] * KA_I[2][1])) % MOD)

C2.append(((C0[j][0][0] * KA_I[0][2]) + (C0[j][0][1] * KA_I[1][2]) + (C0[j][0][2] * KA_I[2][2])) % MOD)

C3.append(C2) C2=[]

C2.append(((C0[j][1][0] * KA_I[0][0]) + (C0[j][1][1] * KA_I[1][0]) + (C0[j][1][2] * KA_I[2][0])) % MOD)

C2.append(((C0[j][1][0] * KA_I[0][1]) + (C0[j][1][1] * KA_I[1][1]) + (C0[j][1][2] * KA_I[2][1])) % MOD)

C2.append(((C0[j][1][0] * KA_I[0][2]) + (C0[j][1][1] * KA_I[1][2]) + (C0[j][1][2] * KA_I[2][2])) % MOD)

C3.append(C2)

C2=[]

C2.append(((C0[j][2][0] * KA_I[0][0]) + (C0[j][2][1] * KA_I[1][0]) + (C0[j][2][2] * KA_I[2][0])) % MOD)

C2.append(((C0[j][2][0] * KA_I[0][1]) + (C0[j][2][1] * KA_I[1][1]) + (C0[j][2][2] * KA_I[2][1])) % MOD)

C2.append(((C0[j][2][0] * KA_I[0][2]) + (C0[j][2][1] * KA_I[1][2]) + (C0[j][2][2] * KA_I[2][2])) % MOD)

C3.append(C2) C1.append(C3) C3 = []

'print("Matriks CipherText 3:")' for j in range(JB):

for i in C1[j]: 'print(i)' 'print("\n")' C3T =[] C3TT = []

for j in range(JB):

C3TTT = []

C3TTT.append((C1[j][0][0])) C3TTT.append((C1[j][1][0])) C3TTT.append((C1[j][2][0])) C3TT.append(C3TTT) C3TTT = []

C3TTT.append((C1[j][0][1])) C3TTT.append((C1[j][1][1])) C3TTT.append((C1[j][2][1])) C3TT.append(C3TTT) C3TTT = []

C3TTT.append((C1[j][0][2])) C3TTT.append((C1[j][1][2])) C3TTT.append((C1[j][2][2])) C3TT.append(C3TTT) C3T.append(C3TT) C3TT = []

'print("\n")'

'print("Matriks CipherText 3 Transpose:")' print("Cipherteks-3:")

(6)

AkhirC3 = time.time()

print("\nWaktu Eksekusi Cipherteks-3 = ", AkhirC3 - AwalC3, " Detik")

'print("\n")' for j in range(JB):

C3 = []

C3.append(((KB_I[0][0] * C1[j][0][0]) + (KB_I[0][1] * C1[j][1][0]) + (KB_I[0][2] * C1[j][2][0])) % MOD)

C3.append(((KB_I[0][0] * C1[j][0][1]) + (KB_I[0][1] * C1[j][1][1]) + (KB_I[0][2] * C1[j][2][1])) % MOD)

C3.append(((KB_I[0][0] * C1[j][0][2]) + (KB_I[0][1] * C1[j][1][2]) + (KB_I[0][2] * C1[j][2][2])) % MOD)

C4.append(C3)

C3=[]

C3.append(((KB_I[1][0] * C1[j][0][0]) + (KB_I[1][1] * C1[j][1][0]) + (KB_I[1][2] * C1[j][2][0])) % MOD)

C3.append(((KB_I[1][0] * C1[j][0][1]) + (KB_I[1][1] * C1[j][1][1]) + (KB_I[1][2] * C1[j][2][1])) % MOD)

C3.append(((KB_I[1][0] * C1[j][0][2]) + (KB_I[1][1] * C1[j][1][2]) + (KB_I[1][2] * C1[j][2][2])) % MOD)

C4.append(C3)

C3=[]

C3.append(((KB_I[2][0] * C1[j][0][0]) + (KB_I[2][1] * C1[j][1][0]) + (KB_I[2][2] * C1[j][2][0])) % MOD)

C3.append(((KB_I[2][0] * C1[j][0][1]) + (KB_I[2][1] * C1[j][1][1]) + (KB_I[2][2] * C1[j][2][1])) % MOD)

C3.append(((KB_I[2][0] * C1[j][0][2]) + (KB_I[2][1] * C1[j][1][2]) + (KB_I[2][2] * C1[j][2][2])) % MOD)

C4.append(C3) C2.append(C4) C4 = []

'print("\n")' DT = ""

'print("Matriks Plainteks:")'

for j in range(JB): for i in C2[j]:

'print(i)'

DT = DT + chr((i[0] + 65)) + chr((i[1] + 65)) + chr((i[2] + 65))

'print("\n")'

'print("Plainteks :", DT)' DT = DT[0:pPT]

print("\nPlainteks :") print(DT)

Akhir = time.time()

(7)

Referensi

Dokumen terkait

Perbandingan secara kualitatif ini dapat didukung dengan menggunakan Pre- Analisis Inversi pada Gambar 6 dimana merupakan proses yang dilakukan untuk mengehtahui nilai

Varibel utama adalah karakteristik organ reproduksi betina yang terdiri atas bentuk/morfologi dan panjang organ reproduksi betina, panjang dan berat Ovarium, panjang dan

Komunikasi matematis merupakan kemampuan untuk menggunakan bahasa matematika (terkait istilah dan simbol matematika), mengekspresikan gagasan dan argument matematika

PENGARUH ADITIF Nd 2 O 3 TERHADAP SIFAT FISIS, SIFAT MAGNET DAN STRUKTUR KRISTAL PADA PEMBUATAN.. MAGNET

Memilih meng-klik button field 2 berarti memilih masuk ke room help (bantuan), dalam room bantuan user akan diberi petunjuk sebelum memulai permainan game edukasi ini.. Selain

p-ISSN: 2528-102X e-ISSN: 2541-4321 Melihat kenyataan seperti demikian peneliti berkeyakinan bahwa pembelajaran dengan menggunakan pendekatan realistik dapat membuat siswa

Audit Manajemen Sumber Daya Manusia tersebut meliputi faktor-faktor sebagai berikut : (a) Independensi (bebas tidak memihak) Berusaha bersikap netral dan

Kajian prostaglandin E2 pada radang pulpa akibat aplikasi getah jarak pagar (jatropha curcas L) serta pengaruhnya terhadap jaringan keras gigi [disertasi]. Makassar: Program