การแฮ็กรหัสโมโนอัลฟาเบติก

ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับ monoalphabetic cipher และการแฮ็กโดยใช้ Python

Monoalphabetic Cipher

การเข้ารหัสโมโนอัลฟาเบติกใช้การแทนที่แบบตายตัวสำหรับการเข้ารหัสข้อความทั้งหมด การเข้ารหัสโมโนอัลฟาเบติกโดยใช้พจนานุกรม Python พร้อมอ็อบเจ็กต์ JSON แสดงอยู่ที่นี่ -

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',
	' ': ' ',
}

ด้วยความช่วยเหลือของพจนานุกรมนี้เราสามารถเข้ารหัสตัวอักษรด้วยตัวอักษรที่เกี่ยวข้องเป็นค่าในออบเจ็กต์ JSON โปรแกรมต่อไปนี้สร้างโปรแกรม monoalphabetic เป็นตัวแทนของคลาสซึ่งรวมถึงฟังก์ชันทั้งหมดของการเข้ารหัสและการถอดรหัส

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

ไฟล์นี้ถูกเรียกในภายหลังเพื่อใช้กระบวนการเข้ารหัสและถอดรหัสของ Monoalphabetic cipher ซึ่งจะกล่าวถึงดังต่อไปนี้ -

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)

เอาต์พุต

คุณสามารถสังเกตผลลัพธ์ต่อไปนี้เมื่อคุณใช้โค้ดที่ระบุข้างต้น -

ดังนั้นคุณสามารถแฮ็กการเข้ารหัสเชิงเดี่ยวด้วยคู่ค่าคีย์ที่ระบุซึ่งแตกข้อความการเข้ารหัสเป็นข้อความธรรมดาจริง