本文主要是介绍【趣味学算法】08 凯撒密码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
注: 本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正
《罗马帝王传》中描述了古罗马恺撒大帝在公元 2 世纪使用的一种加密方法。
它通过将字母按字母表中的顺序后移 3 位起到加密作用,如将字母 A 换作字母 D,将字母 B 换作字母 E,以此类推。
假如有这样一道命令 RETURN TO ROME,在用恺撒的方法加密之后就成为 UHWXUQ WR URPH 这样的密文。
这样即使被敌军截获,也无法从字面上获得有用信息。
在《罗马帝王传》中还说到解密方法:“如果想知道它们的意思,得用第4个字母置换第1个字母,即以D代A,以此类推。”
我们先按照恺撒加密法的规则制成明文和密文字母对照表,如下。
明文字母表: ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表: DEFGHIJKLMNOPQRSTUVWXYZABC
小写字母同理。
接下来让我们编写一段程序实现加密和解密的功能,输入1解密,输入2加密,输入0退出程序
def encrypted():output = ''s = input('请输入要解密的密文:')for c in s:if 'A'<= c <= 'W' or'a' <= c <= 'w':output += chr(ord(c)+3)elif 'X'<= c<= 'Z' or'x' <= c <= 'z':output += chr(ord(c)-23) else:output += creturn outputdef decryption():output = ''s = input('请输入要加密的名文:')for c in s:if 'D'<= c<= 'Z' or'd' <= c <= 'z':output += chr(ord(c)-3)elif 'X'<= c<= 'Z' or'x' <= c <= 'z':output += chr(ord(c)+23) else:output += creturn outputif __name__ == '__main__':while True:i = input('解密1,加密2,退出0,请输入:')try:i = int(i)except Exception as e:print('“{}”非法输入请重新操作\n'.format(i))continueif i == 1:print(encrypted())elif i == 2:print(decryption())elif i==0:print('已退出')breakelse:print('“{}”非法输入请重新操作'.format(i))print()
测试结果:
解密1,加密2,退出0,请输入:1
请输入要解密的密文:ilsb
love解密1,加密2,退出0,请输入:2
请输入要加密的名文:love
ilsb解密1,加密2,退出0,请输入:3
“3”非法输入请重新操作解密1,加密2,退出0,请输入:ilsa
“ilsa”非法输入请重新操作解密1,加密2,退出0,请输入:0
已退出
这篇关于【趣味学算法】08 凯撒密码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!