Kriptografi dengan Python - Caesar Cipher

Pada bab terakhir, kita telah membahas sandi terbalik. Bab ini berbicara tentang sandi Caesar secara rinci.

Algoritma Caesar Cipher

Algoritma cipher Caesar memiliki fitur-fitur berikut -

  • Caesar Cipher Technique adalah metode teknik enkripsi yang sederhana dan mudah.

  • Ini adalah jenis sandi substitusi sederhana.

  • Setiap huruf teks biasa diganti dengan sebuah huruf dengan beberapa posisi tetap di bawah alfabet.

Diagram berikut menggambarkan cara kerja implementasi algoritma cipher Caesar -

Implementasi program dari algoritma cipher Caesar adalah sebagai berikut -

def encrypt(text,s):
result = ""
   # transverse the plain text
   for i in range(len(text)):
      char = text[i]
      # Encrypt uppercase characters in plain text
      
      if (char.isupper()):
         result += chr((ord(char) + s-65) % 26 + 65)
      # Encrypt lowercase characters in plain text
      else:
         result += chr((ord(char) + s - 97) % 26 + 97)
      return result
#check the above function
text = "CEASER CIPHER DEMO"
s = 4

print "Plain Text : " + text
print "Shift pattern : " + str(s)
print "Cipher: " + encrypt(text,s)

Keluaran

Anda dapat melihat cipher Caesar, yaitu output seperti yang ditunjukkan pada gambar berikut -

Penjelasan

Karakter teks biasa dilintasi satu per satu.

  • Untuk setiap karakter dalam teks biasa yang diberikan, ubah karakter yang diberikan sesuai aturan bergantung pada prosedur enkripsi dan dekripsi teks.

  • Setelah langkah-langkah tersebut diikuti, string baru dihasilkan yang disebut teks sandi.

Peretasan Algoritma Caesar Cipher

Teks sandi dapat diretas dengan berbagai kemungkinan. Salah satu kemungkinan tersebut adalahBrute Force Technique,yang melibatkan mencoba setiap kunci dekripsi yang mungkin. Teknik ini tidak membutuhkan banyak usaha dan relatif sederhana untuk seorang hacker.

Implementasi program untuk meretas algoritma cipher Caesar adalah sebagai berikut -

message = 'GIEWIVrGMTLIVrHIQS' #encrypted message
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

for key in range(len(LETTERS)):
   translated = ''
   for symbol in message:
      if symbol in LETTERS:
         num = LETTERS.find(symbol)
         num = num - key
         if num < 0:
            num = num + len(LETTERS)
         translated = translated + LETTERS[num]
      else:
         translated = translated + symbol
print('Hacking key #%s: %s' % (key, translated))

Pertimbangkan teks sandi yang dienkripsi dalam contoh sebelumnya. Kemudian, output dengan kemungkinan metode peretasan dengan kunci dan teknik serangan brute force adalah sebagai berikut -