[Python密码学]--检测英文及破译换位加密

本文介绍了在密码学中如何检测英文字符串,并提供了利用Python破译换位加密的方法。通过创建字典文件,使用removeNonLetters()函数过滤非字母字符,getEnglishCount()计算单词占比,isEnglish()函数判断是否为英文。接着,文章演示了如何通过尝试不同密钥,使用transpositionDecrypt.py脚本破译换位加密,最终展示并解析部分解密结果。
摘要由CSDN通过智能技术生成

检测英文

在破译密码时可能会有上千个可能的密匙,计算机会因此给出各种各样的结果。那么怎么找出唯一明文呢?如果让计算机先判断结果中是乱码还是英文筛选一遍,再将可能的结果交给我们,会不会比人为翻查上千个结果好很多呢?
判断英文的方法:
我们可以制作一个包含所有英文单词的文本文件(字典文件),通过计算机将解密后的字符串分割成单词(利用空格),在依次查找字典文件中是否有这个单词。通过如此可以判断是单词还是乱码。
当然了,正确解密完成后不可能所有的都是单词,比如“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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值