Skip to content

Instantly share code, notes, and snippets.

@SharafatKarim
Created November 16, 2022 04:08
Show Gist options
  • Save SharafatKarim/c00fb3c6c304fe84bf68f11b7b9ae9d5 to your computer and use it in GitHub Desktop.
Save SharafatKarim/c00fb3c6c304fe84bf68f11b7b9ae9d5 to your computer and use it in GitHub Desktop.
Caesar Cipher and The Vigenère Cipher - encoder or decoder
# Caesar Cipher!
def decoder(message, offset):
result=""
for i in range(len(message)):
if not(ord("a")<=ord(message[i])<=ord("z")):
result+=message[i]
continue
elif ord(message[i])+offset>ord("z"):
result += chr(ord(message[i])-26+offset)
continue
result += chr(ord(message[i])+offset)
return(result)
def coder(message, offset):
result=""
for i in range(len(message)):
if not(ord("a")<=ord(message[i])<=ord("z")):
result+=message[i]
continue
elif ord(message[i])-offset<ord("a"):
result += chr(ord(message[i])+26-offset)
continue
result += chr(ord(message[i])-offset)
return(result)
def fdecoder(text):
for i in range(26):
print("Offset: ", i)
print(decoder(text, i))
print("\n")
return "Done!"
# The Vigenère Cipher
def index(st):
return ord(st)-ord('a')
def rindex(num):
return chr(num+ord('a'))
def vdcode(message, key):
long=[]
keyl= key*len(message)
for i in range(len(message)):
if not("a"<= message[i] <="z"):
long.append(" ")
continue
long.append(keyl[0])
keyl= keyl[1:]
result=""
for i in range(len(message)):
if not("a"<= message[i] <="z"):
result += message[i]
continue
elif index(message[i])-index(long[i]) < 0:
result += rindex(index(message[i])-index(long[i])+26)
continue
result += rindex(index(message[i])-index(long[i]))
return result
def vcode(message, key):
long=[]
keyl= key*len(message)
for i in range(len(message)):
if not("a"<= message[i] <="z"):
long.append(" ")
continue
long.append(keyl[0])
keyl= keyl[1:]
result=""
for i in range(len(message)):
if not("a"<= message[i] <="z"):
result += message[i]
continue
elif index(message[i])+index(long[i]) >= 26:
result += rindex(index(message[i])+index(long[i])-26)
continue
result += rindex(index(message[i])+index(long[i]))
return result
def text(text, choice):
print(f"Please Give me the {text} to {choice}")
return input("=> ")
def encode():
message= text("text","encode")
print("Which encryption method do you want to use?")
print("1) Caesar Cipher")
print("2) Vigenère Cipher")
option = int(input("=> "))
if option == 1:
offset= int(text("offset", "encode"))
print(coder(message, offset))
elif option == 2:
key= text("key (word)", "encode")
print(vcode(message, key))
else:
print("Please enter 1 or 2.")
encode()
def decode():
message= text("text","decode")
print("Which encryption method do you want to use?")
print("1) Caesar Cipher")
print("2) Caesar Cipher (brute force - wihtout key)")
print("3) Vigenère Cipher")
option = int(input("=> "))
if option == 1:
offset= int(text("offset", "encode"))
print(decoder(message, offset))
elif option == 2:
fdecoder(message)
elif option == 3:
key= text("key (word)", "encode")
print(vdcode(message, key))
else:
print("Please enter 1 or 2.")
encode()
def choice():
option=0
print("What do you want to do?")
print("1) encode")
print("2) decode")
option= int(input("=> "))
print("Option ", option)
if option == 1:
encode()
elif option == 2:
decode()
else:
print("Please enter 1 or 2.")
choice()
choice()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment