【问题标题】:Twofish: whitening subkey generationTwofish:白化子密钥生成
【发布时间】:2013-06-10 01:51:32
【问题描述】:

我正在实现用于教育软件的 Twofish 算法。我将 QT 用于 UI 并使用来自 Wikipedia 的研究和 Bruce Schneier 的 Twofish 论文,但我坚持生成美白子键。我已经成功理解了如何生成圆形子键,但还没有找到生成白化子键的方法。

我取 k = 2(128 位密钥,128/64 = 2),所以,2k = 4; M_e 和 M_0 的大小为 2,我从原始密钥填充它们并计算 16 轮的轮密钥,每轮 2 个密钥。

所以,我得到的不是 40 个子键,而是 32 个。

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

如何生成白化键?

【问题讨论】:

    标签: algorithm encryption cryptography twofish


    【解决方案1】:

    来自twofish paper

    第 5 页:

    Twofish 在第一轮 Feistel 之前异或 128 位子密钥,在最后一轮 Feistel 之后再异或 128 位 圆形的。这些子项的计算方式相同 方式作为圆形子键,但不使用任何 - 密码中的其他位置。

    第 7 页上的方程式表明,输入白化是用前 4 Ki 完成的,输出白化是用接下来的 4 Ki 完成的。

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

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

    【讨论】:

    • 非常非常感谢。我 ****** 太蹩脚了 - 甚至没有注意到圆键索引中的 +8。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2013-03-17
    相关资源
    最近更新 更多