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 -