维吉尼亚密码简介
维吉尼亚密码是16世纪的一种著名加密算法,在密码学发展史上具有里程碑式的意义。它因其强大的保密性(在当时)而闻名,曾一度被称为“不可破译的密码”。
在近三个世纪的时间里,维吉尼亚密码被认为是高度安全的,并被用于外交和军事通信。直到19世纪中期,这种“不可破译”的神话才被打破。卡西斯基试验通过分析密文中重复序列的间隔,成功找到了密钥长度的线索,从而破解了密码。
如今,它为数不多的用途之一,是中学生在朦胧的暧昧期里,用它为青涩的表白增添一份神秘的惊喜。
暴力破解
卡西斯基试验的成功实施通常需要足够长的密文作为支撑。在计算机算力高度发达的今天,直接采用暴力破解结合字典匹配的方法,会更为高效和实用。
一个现成的.py文件:
https://admin.zzyweb.site:29785/down/rM93hvmldjPH.py
(已内置表白常用英文词,需要Python环境)
如何使用?
ciphertext=希望破译的密文
max_key_length=最长将破解的位数
min_score=最低展示阈值,低于这个值的不显示。

(附)加密与解密原理
维吉尼亚密码的核心在于使用一个密钥词来对明文进行多表替代,而不是像凯撒密码那样始终使用固定的偏移量。这消除了单表替代密码中字母频率分布的统计特征,大大提高了破解难度。
1. 加密过程
加密需要两个要素:
- 明文:需要加密的原始信息。
- 密钥:一个预先约定好的单词或短语(如
KEY
)。
步骤:
- 对齐:将密钥重复书写,直到其长度与明文相同。
- 例如,明文:
ATTACKATDAWN
- 密钥
KEY
重复后:KEYKEYKEYKEY
- 例如,明文:
- 数字转换:将明文和密钥中的每个字母转换为数字(通常 A=0, B=1, …, Z=25)。
- 明文 A-T-T-A-C-K-A-T-D-A-W-N-> [0, 19, 19, 0, 2, 10, 0, 19, 3, 0, 22, 13]
- 密钥 K-E-Y-K-E-Y-K-E-Y-K-E-Y-> [10, 4, 24, 10, 4, 24, 10, 4, 24, 10, 4, 24]
- 模26加法:将明文数字与对应的密钥数字相加,然后对26取模(除以26取余数)。
- 第一个字母:
A(0) + K(10) = 10
->10 % 26 = 10
-> 对应字母K
- 第二个字母:
T(19) + E(4) = 23
->23 % 26 = 23
-> 对应字母X
- 依此类推。
- 第一个字母:
- 数字转字母:将计算得到的数字结果转换回字母,得到密文。
- 最终密文:
KXOXKCMUXOQV
- 最终密文:
2. 解密过程
解密是加密的逆过程,需要相同的密钥。
步骤:
- 对齐:同样将密钥重复至与密文长度一致。
- 密文:
KXOXKCMUXOQV
- 密钥:
KEYKEYKEYKEY
- 密文:
- 数字转换:将密文和密钥转换为数字。
- 密文 K-X-O-X-K-C-M-U-X-O-Q-V-> [10, 23, 14, 23, 10, 2, 12, 20, 23, 14, 16, 21]
- 密钥 K-E-Y-K-E-Y-K-E-Y-K-E-Y-> [10, 4, 24, 10, 4, 24, 10, 4, 24, 10, 4, 24]
- 模26减法:用密文数字减去对应的密钥数字,如果结果为负数,则加上26后再对26取模。
- 第一个字母:
K(10) - K(10) = 0
->0 % 26 = 0
-> 对应字母A
- 第二个字母:
X(23) - E(4) = 19
->19 % 26 = 19
-> 对应字母T
- 依此类推。
- 第一个字母:
- 数字转字母:将得到的数字转换回字母,即恢复出原始的明文。
发表回复