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


Python20-3-3.png


初始源码:能处理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传个小纸条?用恺撒密码一展身手吧。