有大佬可以解答一下吗,急:
对称解密
用python编写程序实现如下功能:
程序接收用户输入密文(只能为大小写英文字母和阿拉伯数字),运行后输出原文。原文和密文的对应关系为:
密文:cde...zabCDE...ZAB123...890
原文:abc...xyzABC...XYZ012...789
原文和密文字符一对一对应;
原文字符a到y、A到Y对应的密文字符依次为该字符按英文字母顺序的下数第2个,数字0到8对应的密文字符依次为按阿拉伯数字顺序的下1个,例如原文为a,密文为c,原文为C密文为E,原文为5,密文为6;
字符y、z、Y、Z、9,依次对于a、b、A、B、0;
intab = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
outtab = "cdefghijklmnopqrstuvwxyzabCDEFGHIJKLMNOPQRSTUVWXYZAB1234567890"
trantab = str.maketrans(intab, outtab)
str = "dDSD78h5sadDJ8HSK74d6SAJhks5SHSA"
print (str.translate(trantab))
fFUF89j6ucfFL9JUM85f7UCLjmu6UJUC
原理:
方法一: 简单的字符串加密
"""
加密解密
maketrans 制作密码表
translate 加密
稳稳C9
"""
# 字典映射关系表 手工编写
e = {"a": "1", "b": "2", "c": "3"}
# 制作密码表
table = str.maketrans(e)
# 明文密码:可以通过input用户输入
s = "abc"
# 加密:将用户输入的明文面使用密码表 table 加密
s2 = s.translate(table)
print("明文:", s, "; 加密后的密文:", s2)
# --------------------------------------
e2 = {"1": "a", "2": "b", "3": "c"}
table2 = str.maketrans(e2)
# 解密
s3 = s2.translate(table2)
print("密码:", s2, "; 解密后:", s3)
================================================================
方法二:引入 python 中的字符数据模块
import string #引入python当中字符模块
#使用大小写字母+数字构建 转换关系 s1 转换前字符,s2 转换后字符,按照顺序对应
s1 = string.ascii_letters + string.digits
#打印 s1 得到的结果: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
s2 = string.digits + string.ascii_letters
#打印 s2 得到的结果: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
#通过zip()函数将2个表格映射再通过dict()封装成字典 也就是方法一的字典映射表了 之前是手工现在是通过模块操作
e = dict(zip(s1, s2))
# 下一步 制作 制作密码表
table = str.maketrans(e)
#后面代码就可以参考第一个方法 接着写了