暴力破解凯撒密码,函数推算出最有可能的结果

话不多说,直接上代码

#使用enchant.checker中的SpellChecker类来解决对一整段文本中的单词进行拼写检查
from enchant.checker import SpellChecker
#暴力破解函数
def violence(s):
    err_num = [] #记录不同key值下,错误单词的个数
    plaint_space = []  #保存不同key值下得到的解密结果
    s= s.lower()
    for k in range(0,26):
        result = ''
        for item in s:
            if item>='a' and item<='z':
                num = ord(item)-k
                #大于可以直接对123取余
                if num>=97:
                    result += chr(num%123)
                else:
                    result += chr(num+123-97)
           #其它字符直接拼接
            else:
                result += item
        ch = SpellChecker('en_US',result)  # 'en_US'是指美式英语,返回值是所有错误单词的迭代器
        le=len(list(ch)) #计算错误单词个数
        err_num.append(le)
        plaint_space.append(result)
        print('key:',k,'message:',result)
    k = err_num.index(min(err_num))   #算出错误单词个数最小的下标
print("最可能的结果:",'key=',k,'message:',plaint_space[k])

if __name__ == '__main__':
  violence('Kv uqwpfu rncwukdng gpqwij')
  print('\n')
  violence('Xqp whh ahoa kb pda sknhz swo ejreoexha')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值