Python ile Kriptografi - Sezar Şifresi

Son bölümde, ters şifreleme konusunu ele aldık. Bu bölüm Sezar şifresinden ayrıntılı olarak bahsediyor.

Sezar Şifreleme Algoritması

Sezar şifresinin algoritması aşağıdaki özelliklere sahiptir -

  • Sezar Şifreleme Tekniği, şifreleme tekniğinin basit ve kolay yöntemidir.

  • Basit bir ikame şifresi türüdür.

  • Her düz metindeki harf, alfabenin bulunduğu sabit sayıda konumu olan bir harfle değiştirilir.

Aşağıdaki diyagram, Sezar şifreleme algoritması uygulamasının çalışmasını göstermektedir -

Sezar şifreleme algoritmasının program uygulaması aşağıdaki gibidir -

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)

Çıktı

Sezar şifresini görebilirsiniz, bu çıktı aşağıdaki resimde gösterildiği gibi -

Açıklama

Düz metin karakteri teker teker taranır.

  • Verilen düz metindeki her karakter için, metnin şifreleme ve şifre çözme prosedürüne bağlı olarak verilen karakteri kurala göre dönüştürün.

  • Adımlar takip edildikten sonra, şifre metni olarak adlandırılan yeni bir dize oluşturulur.

Sezar Şifreleme Algoritmasının Hacklenmesi

Şifreleme metni çeşitli olasılıklarla hacklenebilir. Böyle olasılıklardan biriBrute Force Technique,bu, olası her şifre çözme anahtarını denemeyi içerir. Bu teknik fazla çaba gerektirmez ve bir bilgisayar korsanı için nispeten basittir.

Sezar şifreleme algoritmasını hacklemek için program uygulaması aşağıdaki gibidir -

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

Önceki örnekte şifrelenmiş şifre metnini düşünün. Ardından, anahtarla olası hackleme yöntemleri ve kaba kuvvet saldırı tekniğinin kullanıldığı çıktı aşağıdaki gibidir -