【问题标题】:Make 1 key from 2 vigenere keys用 2 个 vigenere 钥匙制作 1 个钥匙
【发布时间】:2014-10-26 14:38:02
【问题描述】:

我有这个关于 Vigenere 代码的学校作业。

我有 2 个键:AB 和 XYZ。使用这些密钥对文本进行两次加密。 问题是:

  • 如何从这 2 个钥匙中取出 1 个钥匙?
  • 3把钥匙怎么做1把钥匙?

【问题讨论】:

  • 我猜这里的假设是你需要使用相同的密码,而不是P = D_ab|xyz (C) = D_xyz ( D_ab (C) ) :)

标签: encryption cryptography vigenere


【解决方案1】:
  1. 选择组合密钥的长度作为密钥长度的最小公倍数。
  2. 重复每个键,直到填满组合键
  3. 添加所有重复的键。

例如,ABXYZ 假设 A=0:

  1. 长度为2和3,公倍数为6。
  2. AB AB ABXYZ XYZ
  3. A+X, B+Y, A+Z, B+X, A+Y, B+Z = XZZYYA

此算法适用于任意数量的键。

【讨论】:

    【解决方案2】:

    @CodesInChaos 的答案很好,但让我们添加一些数学:

    |C| = gcd(|A|, |B|)
    # gcd: greatest common divisor.
    

    还请注意,您可以计算组合键的值:

    Let's define the keys as:
    A=(a_0,a_1,…,a_i)  
    B=(b_0,b_1,…,b_j)
    
    Then the value of the combined key is:
    
    C={c_i=a_(i%|A|)+b_(i%|B|)   |   0≤i≤lcd(|A|,|B|)}
    

    并且可以推广到每个key的个数:

    C={c_i=a_(i%|A|)+b_(i%|B|)+...+z_(i%|Z|)   |   0≤i≤lcd(|A|,|B|,...,|Z|)}
    

    【讨论】:

      猜你喜欢
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多