检测英文
在破译密码时可能会有上千个可能的密匙,计算机会因此给出各种各样的结果。那么怎么找出唯一明文呢?如果让计算机先判断结果中是乱码还是英文筛选一遍,再将可能的结果交给我们,会不会比人为翻查上千个结果好很多呢?
判断英文的方法:
我们可以制作一个包含所有英文单词的文本文件(字典文件),通过计算机将解密后的字符串分割成单词(利用空格),在依次查找字典文件中是否有这个单词。通过如此可以判断是单词还是乱码。
当然了,正确解密完成后不可能所有的都是单词,比如“AE86”总不能是单词吧!所以我们需要判断前处理一下字符串将非字母的去掉。剩下的如果大多数是单词则判断为正确的英文。
所需的字典文件:https://pan.baidu.com/s/17FviKC-1amWuOCeZWK-ExA 提取码:wlnp
#detectEnglish.py
UPPERLETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
LETTERS_AND_SPACE = UPPERLETTERS + UPPERLETTERS.lower() + ' \t\n'
dictionaryFile = open('dictionary.txt')
englishWords = {
}
for word in dictionaryFile.read().split('\n'):
englishWords[word] = None
dictionaryFile.close()
return englishWords
ENGLISH_WORDS = loadDictionary()
#返回单词占比
def getEnglishCount(message):
message = message