我有这个关于 Vigenere 代码的学校作业。
我有 2 个键:AB 和 XYZ。使用这些密钥对文本进行两次加密。问题是:
- 如何从这 2 个钥匙中取出 1 个钥匙?
- 有 3 把钥匙时如何制作 1 把钥匙?
我有这个关于 Vigenere 代码的学校作业。
我有 2 个键:AB 和 XYZ。使用这些密钥对文本进行两次加密。问题是:
例如AB
,XYZ
假设 A=0:
AB AB AB
和XYZ XYZ
A+X
, B+Y
, A+Z
, B+X
, A+Y
, B+Z
=XZZYYA
该算法适用于任意数量的密钥。
@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|)}
并且可以推广到每个键的数量:
C={c_i=a_(i%|A|)+b_(i%|B|)+...+z_(i%|Z|) | 0≤i≤lcd(|A|,|B|,...,|Z|)}