• 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

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

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