Décryptage du chiffrement de substitution simple

Dans ce chapitre, vous pouvez en apprendre davantage sur la mise en œuvre simple du chiffrement de substitution qui affiche le message chiffré et déchiffré selon la logique utilisée dans la technique de chiffrement de substitution simple. Cela peut être considéré comme une approche alternative de codage.

Code

Vous pouvez utiliser le code suivant pour effectuer le décryptage en utilisant un chiffrement de substitution simple -

import random
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + \
   'abcdefghijklmnopqrstuvwxyz' + \
   '0123456789' + \
   ':.;,[email protected]#$%&()+=-*/_<> []{}`~^"\'\\'

def generate_key():
   """Generate an key for our cipher"""
   shuffled = sorted(chars, key=lambda k: random.random())
   return dict(zip(chars, shuffled))

def encrypt(key, plaintext):
   """Encrypt the string and return the ciphertext"""
   return ''.join(key[l] for l in plaintext)

def decrypt(key, ciphertext):
   """Decrypt the string and return the plaintext"""
   flipped = {v: k for k, v in key.items()}
   return ''.join(flipped[l] for l in ciphertext)

def show_result(plaintext):
   """Generate a resulting cipher with elements shown"""
   key = generate_key()
   encrypted = encrypt(key, plaintext)
   decrypted = decrypt(key, encrypted)
   
   print 'Key: %s' % key
	print 'Plaintext: %s' % plaintext
   print 'Encrypted: %s' % encrypted
   print 'Decrypted: %s' % decrypted
show_result('Hello World. This is demo of substitution cipher')

Production

Le code ci-dessus vous donne la sortie comme indiqué ici -