凯撒加密是最简单的加密算法,代码如下 :

def kaisa(m):#加密函数
      if m==" ":
       return ' '
      elif 97<=ord(m)<123-key or 65<=ord(m)<91-key:#位移值不超过最后一个z字母
          m=chr(ord(m)+key)
          return m
      elif ord(m)>=123-key or 91-key<=ord(m)<91:
          m=chr(ord(m)+key-26)
          return m
out=''
#求解算法
while 1:
    plaintext=input('请输入明文:')
    if plaintext=='退出':
        break
    key=eval(input('请输入位移值:'))
    for i in list(map(kaisa,plaintext)):
     out+=i
    print('加密结果为:',out)

代码比较简单,主要思路就是将明文全都往后推几个字母变成密文,故可以通过穷举的方式列出所有可能的明文结果,代码如下:

#破解凯撒加密

def jiema(m):
 for i in m:
     if i ==' ':
        return " "
     elif 97+key<=ord(m)<123 or 65+key<=ord(m)<92:
        m=chr(ord(m)-key)
        return m
     elif 97<=ord(m)<97+key or 65<=ord(m)<65+key:
        m=chr(ord(m)-key+26)
        return m
m=input('请输入密文:')
out=''
for key in range(1,27):
    for n in list(map(jiema,m)):
     out = out + str(n)
    print('第%d个可能的结果是%s'%(key,out))
    out=''

感谢大家观看。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐