Math Vigenere密码-解密(手动)

Math Vigenere密码-解密(手动),math,encryption,cryptography,vigenere,Math,Encryption,Cryptography,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小程序,使用密钥“

这是一个维格纳密码文本

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”

到目前为止,我已经使用awesomeapplet将密文分成了几部分。所以第一个切片是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(慷慨大方),两者都没有石英那么接近。有很多方法可以解决这个问题,所以文本不能太短,不能从块中产生合适的频率计数

我想我一定是走错路了。我只是希望你们中的一位能够提供一些线索,告诉我哪里出了问题


p、 这是一个数字加密类。

有趣的问题

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

我从使用和您提供的信息开始。提供密文,密钥长度为6,点击初始化。这种方法的优点在于,明文或键中的未知项都保留为连字符

更新密钥,只添加您知道的内容
Q--TZ
,然后单击“更新明文”。在这一点上,我们知道:

o---sua---opo---oca---nha---enc---rom---dth---ama---int---ept---our---mun---tio---ewi---eus---ond---loc---onf---now---hed---off---ere---nsw---esd---tmi---ght

这是我运用脑力的地方。您开始识别明文的位<编码>现在和关闭出现。最后是
ght
——这让我觉得前面的字母可能是元音。例如,
思想
。我用
u
替换了相应的连字符,然后单击update关键字以查找产生该组合的字母。匹配的字母原来是
F
。我认为更新了明文以查看结果。他们看起来没有希望。因此我尝试了
I
,结果是:

o——通常——ropo——loca——onha——eenc——prom——edth——eama——eint——cept——gour——免疫——atio——wewi——beus——GT——第二——yloc——ionf——mnow——poff——仅仅——在——在——在——在——在——在——在——在——在——在——在——明

现在我们有进展了。开始时,我看到的东西可能是
普通的
,接下来我看到的是
int--cept
,接近结尾时
w--nesd--
mi--ight
。瞧。填写
星期三
的字母,并更新关键字生成
QUARTZ

。。。那么,如何将这种方法移植到代码中呢?目前还不确定最好的方法。在密钥中使用已知字符、部分解密密文并强制其他字符的想法很有吸引力。但是如果手头没有字典,我不知道最好的暴力手段是什么


继续(也许)…

一个算法不只是考虑最频繁的字母,而是整个字母表的频率模式。从技术上来说,你可以计算每一个可能的转变,并考虑最大的变化。

如果你想知道如何用手工做这件事,这不是一个编程问题。这些基础知识是构建加密所必需的,所以我认为从这个意义上讲可能还可以。我会投票赞成你的意见,因为我同意。。。呵呵。我可以发誓有一个加密SE网站,但我现在找不到。有许多密码学家在那里闲逛。有一个加密网站的提案即将推出:谢谢,这将是一个很好的解决方法(前提是明文是英文的,而不是两次加扰)。教科书上的方法是使用Kasiski攻击或频率分析,但我不确定如何计算切片的符合指数。