letter_list="ABCDEFGHIJKLMNOPQRSTUVWXYZ" #字母表
#加密函数
def Encrypt(plaintext,key):
ciphertext=""
for ch in plaintext: #遍历明文
if ch.isalpha(): #明文是否为字母,如果是,则判断大小写,分别进行加密
if ch.isupper():
ciphertext+=letter_list[(ord(ch)-65+key) % 26]
else:
ciphertext+=letter_list[(ord(ch)-97+key) % 26].lower()
else: #如果密文不为字母,直接添加到密文字符串里
ciphertext+=ch
return ciphertext
#解密函数
def Decrypt(ciphertext,key):
plaintext=""
for ch in ciphertext: #遍历密文
if ch.isalpha(): #密文为否为字母,如果是,则判断大小写,分别进行解密
if ch.isupper():
plaintext+=letter_list[(ord(ch)-65-key) % 26]
else:
plaintext+=letter_list[(ord(ch)-97-key) % 26].lower()
else: #如果密文不为字母,直接添加到明文字符串里
plaintext+=ch
return plaintext
#主函数
print("加密请按D,解密请按E:")
user_input=input();
while(user_input!='D' and user_input!='E'):#输入合法性判断
print("输入有误!请重新输入:")
user_input=input()
print("请输入密钥:")
key=input()
while(0==int(key.isdigit())):#输入合法性判断
print("输入有误!密钥为数字,请重新输入:")
key=input()
if user_input=='D':
#加密
print("请输入明文:")
plaintext=input()
ciphertext=Encrypt(plaintext,int(key))
print("密文为:\n%s" % ciphertext)
else:
#解密
print("请输入密文:")
ciphertext=input()
plaintext=Decrypt(ciphertext,int(key))
print("明文为:\n%s" % plaintext)
Caesar密码
最新推荐文章于 2024-08-21 17:49:50 发布