南京邮电大学网络攻防训练平台[Vigenere]

本文介绍了如何分析并破解Vigenere加密的密文,通过观察密钥长度和明文特征,利用字典进行尝试,最终确定密钥并解密出明文,揭示了Cryptography在安全通信中的重要性。
摘要由CSDN通过智能技术生成

结合了非常强大的运气,大神直觉的提示,才勉强做出来的。

一、准备工作

拿下题目的两个附件,一个是密文,一个是加密程序。

处理密文就不多说了,十六进制转换成值,Ctrl+C再到winhex中Ctrl+B就行了,就是密文文件,重命名为

newcode.txt

关键是KEY的分析:

#define KEY_LENGTH 2 // Can be anything from 1 to 13

unsigned char key[KEY_LENGTH] = {0x00, 0x00};
  /* of course, I did not use the all-0s key to encrypt */

意思是,长度是1至13不确定,值是0x00-0x255不确定。

明文肯定是可见字符,字典来一个

for i in range(32,126,1):
    dic=dic+chr(i)

第 1 步:确定密文长度

拿可见字符去与密文异或,就得到密钥的取值范围,然后在 for j in range(0,len(f),7) 中试出来,打印每次异或的取值范围,发现只有步长为7,取值范围最相近,然后,取出每一位可见字符的密钥的集合。

f=open('newcode.txt','r').read()
i0=[]
a0={}
l0=[]
l1=[]
times=0
for j in 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值