Skip to content

Instantly share code, notes, and snippets.

@saumiko
Created July 23, 2019 05:12
Show Gist options
  • Save saumiko/bf1a99aadf9340efd1a3670967b9b858 to your computer and use it in GitHub Desktop.
Save saumiko/bf1a99aadf9340efd1a3670967b9b858 to your computer and use it in GitHub Desktop.
Caesar Cipher in Python
import string
def gen_dic(key):
cap_map = {}
small_map = {}
cap_shift = list(string.ascii_uppercase)
small_shift = list(string.ascii_lowercase)
cap_append = cap_shift[:key]
small_append = small_shift[:key]
cap_shift = cap_shift[key:]
small_shift = small_shift[key:]
cap_shift += cap_append
small_shift += small_append
for c, e in zip(list(string.ascii_uppercase), cap_shift):
cap_map[c] = e
for c, e in zip(list(string.ascii_lowercase), small_shift):
small_map[c] = e
return cap_map, small_map
def encrypt(key, s):
key = int(key)
s = list(s)
caps, smalls = gen_dic(key)
for i in range(len(s)):
capital_alpha = s[i] in list(string.ascii_uppercase)
small_alpha = s[i] in list(string.ascii_lowercase)
if capital_alpha:
s[i] = caps[s[i]]
elif small_alpha:
s[i] = smalls[s[i]]
return ''.join(s)
def decrypt(key, s):
key = int(key)
s = list(s)
caps, smalls = gen_dic(key)
caps = dict([(value, key) for key, value in caps.items()])
smalls = dict([(value, key) for key, value in smalls.items()])
for i in range(len(s)):
capital_alpha = s[i] in list(string.ascii_uppercase)
small_alpha = s[i] in list(string.ascii_lowercase)
if capital_alpha:
s[i] = caps[s[i]]
elif small_alpha:
s[i] = smalls[s[i]]
return ''.join(s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment