Vigenere Cipher - 解密(手动)

时间:2011-06-23 13:21:02

标签: math encryption cryptography vigenere

这是一个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真棒小程序将密文分割成了切片。所以第一个切片是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可以解决这个问题,所以它不能太短,不能从块中产生合适的频率计数。

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

P.S。这是一个数字加密类。

2 个答案:

答案 0 :(得分:1)

有趣的问题......

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

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

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

  

0 --- --- SUA OPO --- --- OCA芽--- --- ENC ROM --- --- DTH AMA --- --- INT EPT --- our-- -mun ---蒂奥 - EWI --- EUS ---因--- OND ---禄--- ONF ---现在---建置---停机--- --- ERE新南威尔士州--- --- ESD TMI --- GHT

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

  

0 - usua - ROPO - 轨迹 - onha - eenc - PROM - edth - EAMA - EINT - CEPT - 古尔 - MMUN - ATIO - wewi - beus- -gthe - COND - yloc - ionf - mnow - thed - POFF - 单纯 - INSW - nesd - ATMI - 飞行

现在我们到了某个地方。在开始时,我看到的内容可能是usual,而且我在int--ceptw--nesd-- at mi--ight附近看到了wednesday。瞧。填写QUARTZ的字母并更新关键字会产生{{1}}。

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

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

答案 1 :(得分:1)

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