Dekripsi Sandi Substitusi Sederhana

Dalam bab ini, Anda dapat mempelajari tentang implementasi sederhana dari sandi substitusi yang menampilkan pesan terenkripsi dan didekripsi sesuai logika yang digunakan dalam teknik sandi substitusi sederhana. Ini dapat dianggap sebagai pendekatan alternatif pengkodean.

Kode

Anda dapat menggunakan kode berikut untuk melakukan dekripsi menggunakan sandi substitusi sederhana -

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

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

Keluaran

Kode di atas memberi Anda output seperti yang ditunjukkan di sini -