हैकिंग मोनोलफैबेटिक सिफर

इस अध्याय में, आप मोनोथैबेटिक सेफर के बारे में और पायथन का उपयोग करके इसकी हैकिंग के बारे में जानेंगे।

मोनोलफैबेटिक सिफर

संपूर्ण संदेश को एन्क्रिप्ट करने के लिए एक मोनोऑलफैबेटिक सिफर एक निश्चित प्रतिस्थापन का उपयोग करता है। 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 ऑब्जेक्ट में मान के रूप में एन्क्रिप्ट कर सकते हैं। निम्नलिखित कार्यक्रम एक वर्ग प्रतिनिधित्व के रूप में एक मोनोलेबेटिक प्रोग्राम बनाता है जिसमें एन्क्रिप्शन और डिक्रिप्शन के सभी कार्य शामिल हैं।

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

इस फाइल को बाद में मोनोलेफैबेटिक सिफर की एन्क्रिप्शन और डिक्रिप्शन प्रक्रिया को लागू करने के लिए कहा जाता है, जो नीचे वर्णित है -

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)

उत्पादन

जब आप ऊपर दिए गए कोड को लागू करते हैं तो आप निम्न आउटपुट देख सकते हैं -

इस प्रकार, आप निर्दिष्ट कुंजी मान युग्म के साथ एक मोनोफैबेटिक सिफर को हैक कर सकते हैं जो वास्तविक सादे पाठ के लिए सिफर पाठ को क्रैक करता है।