Vigenere Cipher - 解密(手动)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vigenere Cipher - 解密(手动)相关的知识,希望对你有一定的参考价值。

这是一个Vigenere密文

EORLL TQFDI HOEZF CHBQN IFGGQ MBVXM SIMGK NCCSV
WSXYD VTLQS BVBMJ YRTXO JCNXH THWOD FTDCC RMHEH
SNXVY FLSXT ICNXM GUMET HMTUR PENSU TZHMV LODGN
MINKA DTLOG HEVNI DXQUG AZGRM YDEXR TUYRM LYXNZ
ZGJ

巧合指数给出了六(6)的变化:我知道这是正确的(我使用在线Java小程序使用密钥'QUARTZ'解密整个事物)。

然而,在这个问题中我们只被告知密钥的第一个和最后两个字母 - 'Q'和'TZ'。

到目前为止,我已经使用this awesome applet将密文分割成了切片。所以第一个切片是0,k,2k,3k,4k;第二个是1,k + 1,2k + 1,3k + 1;等等。

KeyPos=0: EQEQQSCXQJJHDEYIUTSVMTVUMTYJ
KeyPos=1: OFZNMICYSYCWCHFCMUULILNGYUX
KeyPos=2: RDFIBMSDBRNOCSLNERTONOIADYN
KeyPos=3: LICFVGVVVTXDRNSXTPZDKGDZERZ
KeyPos=4: LHHGXKWTBXHFMXXMHEHGAHXGXMZ
KeyPos=5: TOBGMNSLMOTTHVTGMNMNDEQRRLG

我的想法是计算每个区块中最高频率的字母,希望最常用的字母能给我一些关于如何找到'U','A'和'R'的线索。但是,这些块中最常见的字母是:

KeyPos=0: Q,4 T,3 E,3, J,3
KeyPos=1: C,4 U,3 Y,3
KeyPos=2: N,4 O,3 R,3 D,3 B,2
KeyPos=3: V,4 D,3 Z,3
KeyPos=4: H,6 X,6 M,3 G,3
KeyPos=5: M,4 T,4 N,3 G,3

产生QCNVHM或QUNVHM(慷慨),这两者都不接近QUARTZ。有online applets可以破解这个没问题,所以它不能太短的文本,以从块中产生适当的频率计数。

我想我必须以错误的方式接近这一点。我只是希望你们中的一个人能够提供一些关于我哪里出错的线索。

附:这是一个数字加密类。

答案

有趣的问题......

我没有破解原始密文的程序化解决方案,但我能够用一点思维力和一些有用的javascript解决它。

我首先使用this page和您提供的信息。提供密文,密钥长度为6并点击初始化。这里的方法有什么好处,明文或密钥中的未知数都是连字符。

更新密钥,只添加你知道的Q---TZ并点击“更新明文”。此时我们知道:

Ø--- SUA --- OPO --- OCA ---芽--- ENC --- ROM ---嗞--- AMA --- INT --- EPT ---我们的--- mun- --tio --- EWI --- EUS ---因--- OND ---禄--- ONF ---现在---建置---停机--- --- ERE新南威尔士州--- ESD --- TMI --- GHT

这是我施加一点脑力的地方。你开始识别明文的位。 thenowoff露面。最后,有ght - 这让我觉得先前的信可能是元音。例如lightthought。我用u替换了相应的连字符,然后点击了更新关键字来查找将产生该组合的字母。匹配的信件原来是F。我想更新了明文以查看结果。他们看起来并不乐观。所以我尝试了i,结果导致:

o - usua - ropo - loca - onha - eenc - prom - ed - eama - entity - cept - gour - mmun - atio - wewi - beus - gthe - -cond - yoc - ionf - mnow - thed - poff - mere - insw - atd - atmi - -

现在我们到了某个地方。在开始我看到可能是usual的东西,并且在我看到int--cept和接近结束w--nesd-- at mi--ight。瞧。填写wednesday的字母并更新关键字产生QUARTZ

...那么,如何将这种方法移植到代码中?还不确定最好的方法。在密钥中使用已知字符,部分解密密文和强制其余部分的想法是有吸引力的。但是没有一本方便的字典,我不确定最好的强奸方法是什么......

继续(也许)......

另一答案

算法不仅会考虑最常用的字母,还会考虑整个字母表的频率模式。从技术上讲,你计算每个可能的班次的index of coincidence并考虑最大的班次。

以上是关于Vigenere Cipher - 解密(手动)的主要内容,如果未能解决你的问题,请参考以下文章

Vigenere Cipher使用命令行提示

C++ 链表凯撒密码 Vigenere Cipher

java cipher

Vigenere-cipher 错误输出

PSET 2:Vigenere Cipher 部分工作?

Vigenere Cipher - 不给信[关闭]