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

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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐