Monoalphabetic Cipher'ı Hacklemek
Bu bölümde, monoalphabetic şifreleme ve Python kullanarak hacklenmesi hakkında bilgi edineceksiniz.
Monoalphabetic Şifreleme
Bir Monoalphabetic şifreleme, tüm mesajı şifrelemek için sabit bir ikame kullanır. JSON nesnelerine sahip bir Python sözlüğü kullanan bir monoalphabetic şifre burada gösterilmektedir -
monoalpha_cipher = {
'a': 'm',
'b': 'n',
'c': 'b',
'd': 'v',
'e': 'c',
'f': 'x',
'g': 'z',
'h': 'a',
'i': 's',
'j': 'd',
'k': 'f',
'l': 'g',
'm': 'h',
'n': 'j',
'o': 'k',
'p': 'l',
'q': 'p',
'r': 'o',
's': 'i',
't': 'u',
'u': 'y',
'v': 't',
'w': 'r',
'x': 'e',
'y': 'w',
'z': 'q',
' ': ' ',
}
Bu sözlük yardımı ile JSON nesnesinde değer olarak ilişkili harfleri içeren harfleri şifreleyebiliriz. Aşağıdaki program, tüm şifreleme ve şifre çözme işlevlerini içeren bir sınıf temsili olarak monoalphabetic bir program oluşturur.
from string import letters, digits
from random import shuffle
def random_monoalpha_cipher(pool = None):
if pool is None:
pool = letters + digits
original_pool = list(pool)
shuffled_pool = list(pool)
shuffle(shuffled_pool)
return dict(zip(original_pool, shuffled_pool))
def inverse_monoalpha_cipher(monoalpha_cipher):
inverse_monoalpha = {}
for key, value in monoalpha_cipher.iteritems():
inverse_monoalpha[value] = key
return inverse_monoalpha
def encrypt_with_monoalpha(message, monoalpha_cipher):
encrypted_message = []
for letter in message:
encrypted_message.append(monoalpha_cipher.get(letter, letter))
return ''.join(encrypted_message)
def decrypt_with_monoalpha(encrypted_message, monoalpha_cipher):
return encrypt_with_monoalpha(
encrypted_message,
inverse_monoalpha_cipher(monoalpha_cipher)
)
Bu dosya daha sonra aşağıda belirtilen Monoalphabetic şifrelemenin şifreleme ve şifre çözme işlemini uygulamak için çağrılır
import monoalphabeticCipher as mc
cipher = mc.random_monoalpha_cipher()
print(cipher)
encrypted = mc.encrypt_with_monoalpha('Hello all you hackers out there!', cipher)
decrypted = mc.decrypt_with_monoalpha('sXGGt SGG Nt0 HSrLXFC t0U UHXFX!', cipher)
print(encrypted)
print(decrypted)
Çıktı
Yukarıda verilen kodu uyguladığınızda aşağıdaki çıktıyı gözlemleyebilirsiniz -
Böylece, şifreleme metnini gerçek düz metne ayıran, belirtilen anahtar değer çiftine sahip bir monoalphabetic şifreyi kırabilirsiniz.