Math 破解amsco密码

Math 破解amsco密码,math,cryptography,Math,Cryptography,我已经成功地为[amsco cipher]()实现了一个将明文转换为密文的程序。然而,我不知道如何将密文转换成纯文本。如何确定将密码转换为纯文本的列的长度(或每列的行数)? 例如,如果密文为EMAAE HUMBA LMNRE AUDSR RTSUN WHAVP TOEMH KITFE DGEUS TEATO SHOSO YHNME EKLAI,列键为35142,则列“1”下的起始字母为E,同一列的下一行为MA。列号“1”中的第三行将有“A”,依此类推。但是,如何确定每列的总行数 谢谢。我认为,最

我已经成功地为[amsco cipher]()实现了一个将明文转换为密文的程序。然而,我不知道如何将密文转换成纯文本。如何确定将密码转换为纯文本的列的长度(或每列的行数)? 例如,如果密文为EMAAE HUMBA LMNRE AUDSR RTSUN WHAVP TOEMH KITFE DGEUS TEATO SHOSO YHNME EKLAI,列键为35142,则列“1”下的起始字母为E,同一列的下一行为MA。列号“1”中的第三行将有“A”,依此类推。但是,如何确定每列的总行数


谢谢。

我认为,最简单的方法就是编写一个循环,就像编码一样。因此,它为每列加上1和2,直到没有剩下字母为止

下面是一个对文本进行解码以显示我的意思的程序(它是用python 3编写的):

以下是输出:

total chars 65

key length 5

key digit and number of characters
3 13
5 14
1 13
4 13
2 12

before sorting [('3', 13), ('5', 14), ('1', 13), ('4', 13), ('2', 12)]
after sorting [('1', 13), ('2', 12), ('3', 13), ('4', 13), ('5', 14)]
digit 1 column EMAAEHUMBALMN
digit 2 column REAUDSRRTSUN
digit 3 column WHAVPTOEMHKIT
digit 4 column VEDGEUSTEATOS
digit 5 column HOSOYHNMEEKLAI

ordered columns ['WHAVPTOEMHKIT', 'HOSOYHNMEEKLAI', 'EMAAEHUMBALMN', 'VEDGEUSTEATOS', 'REAUDSRRTSUN']

decode
WHOEVERHASMADEAVOYAGEUPTHEHUDSONMUSTREMEMBERTHEKAATSKILLMOUNTAINS

我测试了Andrew的代码,但它似乎并不适用于所有情况。顺便说一句,我最近正在研究Amsco密码,如果您知道密钥,有一种相当简单的方法可以解密密文:

  • 您需要执行的第一步是将密文写入列中,就像加密密文一样

  • 使用此格式,您就知道原始纯文本中每列中必须包含多少个字母

  • 从密文中可以看出,前一两个字母将出现在标有1的列中。因此,找到这一列(记住第1列可能不一定是第一列,取决于您的键),查看字母格式,然后添加字母。例如,如果您知道标有“一”的列的格式为:

    AB

    C

    F

    G

  • 然后,您只需循环遍历前七个字母,并根据上述格式将它们添加到第一列中

    4.对其余列重复此方法,完成后,逐行读取字母,以获得原始纯文本


    我所有的代码都在工作,但是有一场比赛正在进行,其中一项任务涉及到这个密码。我会在两周内完成。

    没问题,很有趣。代码不是非常清晰,但我看不出如何更好地编写它,抱歉。是的,但我认为在某些情况下,索引可能超出范围。例如我在这里试过一个例子,我有一个
    5
    ,我应该在
    ordered=…
    开头的行中有一个
    n
    。上面的代码是固定的。谢谢,但我相信它不会产生正确的结果。对于代码中的eg,它生成的纯文本为“idtrsmotthhornotiseoutherswieroboinejmamrersorn”,而实际上它应该是“ridersontestorminothishouseerbornjimmorrison”,如果你像编码一样写下它的前两行,你会得到(R ID E R s O NT H)(ES T或M in T OT),所以1列(在右边)从热的开始。但在加密文本的开头有HET。所以我觉得你的加密文本是错的。我还编写了加密例程,当我加密文本时,上面的代码会对其进行解密。因此,要么我误解了密码的工作原理,要么你的加密代码是错误的。
    total chars 65
    
    key length 5
    
    key digit and number of characters
    3 13
    5 14
    1 13
    4 13
    2 12
    
    before sorting [('3', 13), ('5', 14), ('1', 13), ('4', 13), ('2', 12)]
    after sorting [('1', 13), ('2', 12), ('3', 13), ('4', 13), ('5', 14)]
    digit 1 column EMAAEHUMBALMN
    digit 2 column REAUDSRRTSUN
    digit 3 column WHAVPTOEMHKIT
    digit 4 column VEDGEUSTEATOS
    digit 5 column HOSOYHNMEEKLAI
    
    ordered columns ['WHAVPTOEMHKIT', 'HOSOYHNMEEKLAI', 'EMAAEHUMBALMN', 'VEDGEUSTEATOS', 'REAUDSRRTSUN']
    
    decode
    WHOEVERHASMADEAVOYAGEUPTHEHUDSONMUSTREMEMBERTHEKAATSKILLMOUNTAINS