Twofish:美白亚克一代

时间:2013-06-09 17:16:18

标签: algorithm encryption cryptography twofish

我正在实施用于教育软件的Twofish算法。我使用QT进行用户界面和使用维基百科的研究和布鲁斯施奈尔的Twofish论文,但我坚持生成美白子项。我已经成功地理解了如何生成圆形子键,但还没有找到生成美白的方法。

我正在考虑k = 2(128位密钥,128/64 = 2),因此,2k = 4; M_e和M_0的大小是2,我从原始密钥中填充它们并计算16轮的轮密钥,每个密钥为2个密钥。

所以,而不是40个子项,我只得到32个。

我在哪里错过了8美白?我已经重新阅读了这篇论文,并没有为它们找到算法,也没有找到关于如何在轮次之前或之后生成第一个或最后一个N键的算法的建议。

如何生成美白键?

1 个答案:

答案 0 :(得分:1)

来自twofish paper

第5页:

  

在第一个Feistel轮之前的两个xors 128位子密钥,以及在最后一个Feistel之后的另一个128位   回合。这些子键的计算方法相同   作为圆形子键的方式,但不使用任何 -   密码中的其他地方。

第7页上的公式显示输入白化是使用前4 Ki完成的,输出白化是使用下一个4 Ki完成的。

函数F(在主轮中使用)使用键K_(2r + 8)和K_(2r + 9)。添加+8和+9是为了跳过用于美白的8个键。

总之,您需要为额外的4轮生成密钥(制作8个额外的密钥)。前4个键用于输入,后4个用于输出。