恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文: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 密文: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 对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26 上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26 假设用户可能使用的输入包含大小写字母azAZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格及非英文字母不用进行加密处理。 实现代码【1】: sr1 = “abcdefghijklmnopqrstuvwxyz”
sr2 = sr1.upper() # 将小写字母转换成大写字母
sr = sr1 + sr1[0:3] + sr2 + sr2[0:3] # sr1 + sr1[0:3]表示到最后一位时与开头字符相接 in_str = input() # 获取用户输入
out_str = “” # 自定义输出的字符串为空变量
for j in in_str: # 遍历用户输入的值
i = sr.find(j) # 检索的字符串的下标序列
if (i > -1): # 如果字符串下标序列大于1
out_str = out_str + sr[i + 3] # 循环输出下标加3的字符
else:
out_str = out_str + j #d对于非英文字母不进行加密
print(out_str) 实现代码【2】: s = input()
t = “”
for c in s:
if ‘a’ <= c <= ‘z’:
t += chr( ord(‘a’) + ((ord©-ord(‘a’)) + 3 )%26 )
elif ‘A’<=c<=‘Z’:
t += chr( ord(‘A’) + ((ord©-ord(‘A’)) + 3 )%26 )
else:
t += c
print(t)
# 凯撒密码实现方法较多,此种更为直接。
|