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

DAFTAR PUBLIKASI ILMIAH PENULIS (TESIS)

  

73

LAMPIRAN-1

  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

  5

  LAMPIRAN-2

Listing Program

  def isInverse(det): 'print("\n")' x = MOD DetA = (KA[0][0] * ((KA[1][1]*KA[2][2]) - y = 1

  (KA[1][2]*KA[2][1]))) - \ while (1): (KA[0][1] * ((KA[1][0]*KA[2][2]) - y = x % det (KA[1][2]*KA[2][0]))) + \ 'print("X = ", x, " Det = ", det, "Y = ", y)' (KA[0][2] * ((KA[1][0]*KA[2][1]) - if y == 0 and det == 1: (KA[1][1]*KA[2][0]))) return 1 DetA = DetA % MOD elif y == 0 and det != 1: 'print("Matriks Kunci A:")' return 0 x = det for i in KA: det = y 'print(i)'

  'print("\n")' PT = 'print("Determinan :", DetA)'

  "INDONESIATANAHAIRBETAPUSA i = 1 KAABADINANJAYAINDONESIASEJ while ((i * DetA) % MOD) != 1: AKDULUKALASELALUDIPUJAPUJA i = i + 1 BANGSADISANATEMPATLAHIRBET InvModulo = i ADIBUAIDIBESARKANBUNDATEMP 'print("Inverse Modulo = %i\n" % i)' ATBERLINDUNGDIHARITUATEMPA TAKHIRMENUTUPMATA" M11 = ((KA[1][1]*KA[2][2]) -

  (KA[1][2]*KA[2][1])) % MOD pPT = len(PT) M12 = ((KA[1][0]*KA[2][2]) - print("Plainteks :") (KA[1][2]*KA[2][0])) % MOD print(PT) M13 = ((KA[1][0]*KA[2][1]) - print("panjang plainteks =", len(PT)) (KA[1][1]*KA[2][0])) % MOD

  M21 = ((KA[0][1]*KA[2][2]) - if len(PT) % 9 != 0: (KA[0][2]*KA[2][1])) % MOD sisa = 9 - len(PT) % 9 M22 = ((KA[0][0]*KA[2][2]) - 'print("sisa :", sisa)' (KA[0][2]*KA[2][0])) % MOD for i in range(sisa): M23 = ((KA[0][0]*KA[2][1]) -

  PT = PT + "Z" (KA[0][1]*KA[2][0])) % MOD else: M31 = ((KA[0][1]*KA[1][2]) - sisa = 0 (KA[0][2]*KA[1][1])) % MOD 'print("sisa :", sisa)' M32 = ((KA[0][0]*KA[1][2]) -

  'print("Plainteks Hill Cipher :", PT)' (KA[0][2]*KA[1][0])) % MOD print("\n") M33 = ((KA[0][0]*KA[1][1]) - (KA[0][1]*KA[1][0])) % MOD

  M = [] JB = int(len(PT)/9) Minor = [[M11,M12,M13], for j in range(JB): [M21,M22,M23],

  M1 = [] [M31,M32,M33]] for i in range(3): M0 = [] Kofaktor = [[M11*1,M12*-1,M13*1], M0.append(ord(PT[j*9+i*3])-65) [M21*-1,M22*1,M23*-1], M0.append(ord(PT[j*9+i*3+1])-65) [M31*1,M32*-1,M33*1]] M0.append(ord(PT[j*9+i*3+2])-65) M1.append(M0) AdjA = [[Kofaktor[0][0], Kofaktor[1][0],

  M.append(M1) Kofaktor[2][0]], [Kofaktor[0][1], Kofaktor[1][1],

  'print("Matriks Plainteks Hill Cipher:")' Kofaktor[2][1]], for j in range(JB): [Kofaktor[0][2], Kofaktor[1][2], for i in M[j]: Kofaktor[2][2]]]

  'print(i)'

  

74

  

58

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

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

  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][2], Kofaktor[1][2], Kofaktor[2][2]]]

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

  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])' 'print("\nWaktu Eksekusi Invers B = ",

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

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

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

  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)

  [InvModulo*AdjA[1][0] % 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 = [[17, 5, 20], [23, 9, 3], [11, 2, 12]]

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

  DetB = (KB[0][0] * ((KB[1][1]*KB[2][2]) - (KB[1][2]*KB[2][1]))) - \

  (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

  AkhirInvB - AwalInvB, " Detik")' 'print("\n")'

  

59

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

  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]) +

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

  C1TTT = [] C1TTT.append((C[j][0][2])) C1TTT.append((C[j][1][2])) C1TTT.append((C[j][2][2])) C1T.append(C1TT) C1TT = []

  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 = []

  'print("Matriks CipherText 1 Transpose:")' print("Cipherteks-1:") print(DT) AkhirC1 = time.time() print("\nWaktu Eksekusi Cipherteks-1 = ",

  C1TTT = [] C1TTT.append((C[j][0][0])) C1TTT.append((C[j][1][0])) C1TTT.append((C[j][2][0])) C1TT.append(C1TTT) C1TTT = [] C1TTT.append((C[j][0][1])) C1TTT.append((C[j][1][1])) C1TTT.append((C[j][2][1])) C1TT.append(C1TTT)

  for j in range(JB): C0 = [] C0.append(((M[j][0][0] * KA[0][0]) +

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

  (M[j][0][1] * KA[1][0]) + (M[j][0][2] * 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)

  C1.append(C0) C0=[] C0.append(((M[j][2][0] * KA[0][0]) +

  C1T =[] C1TT = [] for j in range(JB):

  (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")'

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

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

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

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

  (C0[j][0][1] * KA_I[1][2]) + (C0[j][0][2]

  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 = []

  C3T =[] C3TT = [] for j in range(JB):

  'print(i)' 'print("\n")'

  'print("Matriks CipherText 3:")' for j in range(JB): for i in C1[j]:

  (C0[j][2][1] * KA_I[1][2]) + (C0[j][2][2]

  (C0[j][2][1] * KA_I[1][1]) + (C0[j][2][2]

  (C0[j][2][1] * KA_I[1][0]) + (C0[j][2][2]

  (C0[j][1][1] * KA_I[1][2]) + (C0[j][1][2]

  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]) +
  • KA_I[2][1])) % MOD) C2.append(((C0[j][1][0] * KA_I[0][2]) +

  (C0[j][0][1] * KA_I[1][0]) + (C0[j][0][2]

  (C0[j][0][1] * KA_I[1][1]) + (C0[j][0][2]

  C2 = [] C2.append(((C0[j][0][0] * KA_I[0][0]) +

  AkhirC2 - AwalC2, " Detik") print("\n") for j in range(JB):

  65)) + chr((i[2] + 65)) 'print("\n")' print("Cipherteks-2:") print(DT) AkhirC2 = time.time() print("\nWaktu Eksekusi Cipherteks-2 = ",

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

  'print("Matriks CipherText 2 Transpose:")' DT = "" for j in range(JB): for i in C2T[j]:

  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("\n")' C2T =[] for j in range(JB):

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

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

  

60

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

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

  'print("Plainteks :", DT)' DT = DT[0:pPT] print("\nPlainteks :") print(DT) Akhir = time.time() print("\nWaktu Eksekusi Seluruhnya :",

  65)) + chr((i[2] + 65)) 'print("\n")'

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

  'print("\n")' DT = "" 'print("Matriks Plainteks:")' for j in range(JB): for i in C2[j]:

  (KB_I[2][1] * C1[j][1][2]) + (KB_I[2][2]

  (KB_I[2][1] * C1[j][1][1]) + (KB_I[2][2]

  (KB_I[2][1] * C1[j][1][0]) + (KB_I[2][2]

  (KB_I[1][1] * C1[j][1][1]) + (KB_I[1][2]

  (KB_I[1][1] * C1[j][1][2]) + (KB_I[1][2]

  (KB_I[1][1] * C1[j][1][0]) + (KB_I[1][2]

  (KB_I[0][1] * C1[j][1][2]) + (KB_I[0][2]

  (KB_I[0][1] * C1[j][1][1]) + (KB_I[0][2]

  (KB_I[0][1] * C1[j][1][0]) + (KB_I[0][2]

  C3 = [] C3.append(((KB_I[0][0] * C1[j][0][0]) +

  print("\nWaktu Eksekusi Cipherteks-3 = ", AkhirC3 - AwalC3, " Detik") for j in range(JB):

  

61

AkhirC3 = time.time()

  Akhir - Awal, " Detik