如何在未知iv值情况下如何进行手工破译ROT密文?

事件

在阅读到关于密码学加解密的时候,突然间想到是否在未知iv值的情况下手工破译ROT密文。
于是觉得利用频率分析来破解也许可行,以下是我的思路。

示例 “FRQJUDWXODWLRQVBRXJRWLW”

1.绘制索引表格

1234567891011121314151617181920212223242526
ABCDEFGHIJKLMNOPQRSTUVWXYZ

2.频率分析

在英文中 E,T,A,O,N,R,I,S,H 这些字母使用频率是最高的

123456789 1011121314151617181920212223242526
ABCDEFGHIJKLMNOPQRSTUVWXYZ

1.统计字符串中出现的最高次数频率的字符
"FRQJUDWXODWLRQVBRXJRWLW"

字母出现次数
B1
D2
F1
J2
L2
O1
Q2
R4
U1
V1
W4
X2

3.假定向量iv

定义一个iv向量,X为加密字符串中出现的最高次数频率的字符的索引

iv=[X−5X−20X−1X−15X−14X−18X−9X−19X−18] \mathbf{iv} = \begin{bmatrix} X - 5 \\ X - 20 \\ X - 1 \\ X - 15 \\ X - 14 \\ X - 18 \\ X - 9 \\ X - 19 \\ X - 18 \end{bmatrix} iv=X5X20X1X15X14X18X9X19X18

本次示例中R的索引(18)作为X
带入计算得
iv=[13,−2,17,3,4,0,9,−1,0]

4.连贯性猜解

密文:"FRQJUDWXODWLRQVBRXJRWLW"

FRQJUDWXODWLRQVBXJRWLW
6181710214232415423121817222241018231223

将密文索引逐一带入Pi,并且每一个索引值都要减去假定iv

Si,j=(((Pi−ivj)mod  26)+26)mod  26 S_{i,j} = (((P_i - iv_j) \mod 26) + 26) \mod 26 Si,j=(((Piivj)mod26)+26)mod26


先获取前三个字母

P_i (F=6)666666666
iv_j13-2173409-10
S_{0,j}198153262376
对应字母SHOCBFWGF

P_i (R=18)181818181818181818
iv_j13-2173409-10
S_{1,j}520115141891918
对应字母ETBONSITS

P_i (Q=17)171717171717171717
iv_j13-2173409-10
S_{2,j}419014131781817
对应字母DSANMRISR

根据相同的 iv_j 进行整理,我们按照 iv_j 的顺序 逐列组合 得到最终字符串(寻找具有单词连贯性的字符):

iv_j第 1 行 (F=6)第 2 行 (R=18)第 3 行 (Q=17)
13SED
-2HTS
17OBA
3CON
4BNM
0FSR
9WII
-1GTS
0FSR

5.解密

仅仅取iv_j=3继续依次计算解密

在这里插入图片描述

明文:CONGRATULATIONSYUGOTIT

"CONGRATULATIONS YOU GOT IT"

最终iv=3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值