Kernel: Python 3 (Anaconda 5)
Advanced unadvanced cryptography
The Caesar cipher was silly. It was effective mainly against illiterate people.
A more serious (but still silly) cipher is a substitution cipher.
In this kind of cipher, any plaintext letter can be mapped to any ciphertext letter.
We'll define one of these below (and eventually see how to crack such a cipher).
In [2]:
('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z')
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
In [3]:
{'A': 'M', 'B': 'Z', 'C': 'O', 'D': 'B', 'E': 'J', 'F': 'U', 'G': 'T', 'H': 'Q', 'I': 'L', 'J': 'X', 'K': 'R', 'L': 'N', 'M': 'E', 'N': 'P', 'O': 'D', 'P': 'H', 'Q': 'F', 'R': 'C', 'S': 'S', 'T': 'V', 'U': 'Y', 'V': 'W', 'W': 'G', 'X': 'I', 'Y': 'A', 'Z': 'K'}
In [4]:
In [5]:
'LNDWJNYOA'
In [6]:
Invalid message: Only uppercase letters allowed.
In [7]:
'ITRAINEDANDITRAINEDANDITRAINEDPIGLETTOLDHIMSELFTHATNEVERINALLHISLIFEANDHEWASGOODNESSKNOWSHOWOLDTHREEWASITORFOURNEVERHADHESEENSOMUCHRAINDAYSANDDAYSANDDAYSWITHPIGLETTRAPPEDBYTHEFLOODHISMISSAGEINABOTTLEMAYBETHEONLYHOPE'
In [8]:
'LVCMLPJBMPBLVCMLPJBMPBLVCMLPJBHLTNJVVDNBQLESJNUVQMVPJWJCLPMNNQLSNLUJMPBQJGMSTDDBPJSSRPDGSQDGDNBVQCJJGMSLVDCUDYCPJWJCQMBQJSJJPSDEYOQCMLPBMASMPBBMASMPBBMASGLVQHLTNJVVCMHHJBZAVQJUNDDBQLSELSSMTJLPMZDVVNJEMAZJVQJDPNAQDHJ'
In [0]:
In [21]:
ENEOENFLEOKFXAQNOFDEMTPXOQONPOKPOPOJEOHEXIVWFVWQXKEOKIPHOSFMVMPOPUEMCWPPNAEMVFXEVESFFNFZFOWFDPOEMCWPNEXMWQYVPVWFDFMVAQOMVFXMCWPPNWFDFOVPOVPEVVFOKCEATXQKSFHOQZFXMQVIEOKTFCEAFVWFFKQVPXPUVWFHOKFXSXEKHEVFYEYFXSXEOVEEUVFXSXEKHEVQOSUXPACEATXQKSFQOAQNOFAPZFKTECGVPNPOKPODQVWFOPHSWMEZQOSMVPNQZFUPXPOFIFEXWFDEMKFVFXAQOFKVPTFCPAFEDXQVFXTIWFWEKTFFOPUUFXFKVWFYPMQVQPOPUEMMQMVEOVFKQVPXEVYHOCWECNEMMQCTXQVQMWWHAPXAESERQOFWFXFAEQOFKEVYHOCWUPXVWFOFLVFQSWVIFEXM
In [0]: