python实现凯撒加密及解密算法

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

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=''

感谢大家观看。

  • 7
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值