话不多说,直接上代码
#使用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')