Monoalphabetische Chiffre hacken
In diesem Kapitel erfahren Sie mehr über die monoalphabetische Verschlüsselung und deren Hacking mit Python.
Monoalphabetische Chiffre
Eine monoalphabetische Verschlüsselung verwendet eine feste Ersetzung zum Verschlüsseln der gesamten Nachricht. Eine monoalphabetische Verschlüsselung unter Verwendung eines Python-Wörterbuchs mit JSON-Objekten wird hier gezeigt -
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',
' ': ' ',
}
Mit Hilfe dieses Wörterbuchs können wir die Buchstaben mit den zugehörigen Buchstaben als Werte im JSON-Objekt verschlüsseln. Das folgende Programm erstellt ein monoalphabetisches Programm als Klassendarstellung, das alle Funktionen der Ver- und Entschlüsselung enthält.
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)
)
Diese Datei wird später aufgerufen, um den Verschlüsselungs- und Entschlüsselungsprozess der monoalphabetischen Verschlüsselung zu implementieren, der wie folgt erwähnt wird:
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)
Ausgabe
Sie können die folgende Ausgabe beobachten, wenn Sie den oben angegebenen Code implementieren:
Auf diese Weise können Sie eine monoalphabetische Chiffre mit einem bestimmten Schlüsselwertpaar hacken, wodurch der Chiffretext in tatsächlichen Klartext umgewandelt wird.