破解修改后的 Vigenere 密码
Posted
技术标签:
【中文标题】破解修改后的 Vigenere 密码【英文标题】:Breaking a Modified Vigenere Cipher 【发布时间】:2012-12-01 11:12:34 【问题描述】:我正在研究的算法。常规的 Vigenere 密码的工作方式如下:
Plaintext: ATTACKATDAWN
Key: LEMONLEMONLE
Ciphertext: LXFOPVEFRNHR
普通版
CR[i] = (P[i] - 33 + K[i]) mod 94 + 33
修改版
CM[i] = (P[i] - 33 + K[i] + CM[i-1] - 33) mod 94 + 33
注意修改后的版本如何使用以前的状态/字符来生成新的。我打破它的理论是将修改后的版本反转回常规的 Vigenere 密码。这样我可以应用一些频率分析和其他方法。我需要以某种方式重新排列该等式,以便在 LHS 上使用 C 具有“previousC”。由于 C 和 previousC 都是已知值,因此应该很容易进行反转(从第一个字符开始) .
我唯一的问题是,如何用 C 和 previousC 重写方程?如果有人能指出这一点,那将有很大帮助。
【问题讨论】:
【参考方案1】:CR
表示常规的Viginere密文,CM
表示修改后的Viginere密文
CR[i] = (P[i] + K[i]) mod 26
CM[i] = (P[i] + K[i] + CM[i-1]) mod 26
= (CR[i] + CM[i-1]) mod 26
现在简单解出原始密文CR
CR[i] = (CM[i] - CM[i-1]) mod 26
一旦你有了常规密文,就照常破解它。
【讨论】:
我只是试图实现这一点,但似乎又被卡住了。我将公式从简单版本更新为真实版本(带有偏移量),因为我的语言从字符“!”开始。并以“~”结尾。你能告诉我这个 CR[i] 解决方案吗?以上是关于破解修改后的 Vigenere 密码的主要内容,如果未能解决你的问题,请参考以下文章
使用修改后的 Vigenere 密码算法,解密不会导致原始输入 [关闭]