Python实例解析:凯撒编码
来自CloudWiki
实例解析:凯撒编码
- 例题:凯撒编码
- “恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码
恺撒密码它采用了替换方法对信息中的每一个英文字符
循环替换为字母表序列该字符后面第三个字符:
原文: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
初始源码:能处理26个字母除xyz以外的字符的加密
plaincode = input("请输入明文: ") for p in plaincode: #print(p) if ord("a") <= ord(p) <= ord("z"): print(chr(ord(p)+ 3),end='') #(ord(p) - ord("a") + 3)代表说a后面第几个字符 else: print(p, end='')
改进源码:能处理所有26个字符的加密
ptxt = input("请输入明文文本: ") for p in ptxt: if "a" <= p <= "z": print(chr(ord("a")+(ord(p)-ord("a")+3)%26), end='') elif "A" <= p <= "Z": print(chr(ord("A")+(ord(p)-ord("A")+3)%26), end='') else: print(p, end='')
解密代码:
etxt = input("请输入加密后文本: ") for p in etxt: if "a" <= p <= "z": print(chr(ord("a")+(ord(p)-ord("a")-3)%26), end='') elif "A" <= p <= "Z": print(chr(ord("A")+(ord(p)-ord("A")-3)%26), end='') else: print(p, end='')
思考:
有没有一个人,你想给TA传个小纸条?用恺撒密码一展身手吧。