首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twofish:白化子密钥生成

Twofish:白化子密钥生成
EN

Stack Overflow用户
提问于 2013-06-10 01:16:18
回答 1查看 605关注 0票数 1

我正在实现用于教育软件的Twofish算法。我正在使用QT作为UI,并使用维基百科的研究和Bruce Schneier的Twofish论文,但我坚持生成白化子密钥。我已经成功地了解了如何生成轮子密钥,但还没有找到生成白化子密钥的方法。

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

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

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

如何生成美白密钥?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-10 01:51:32

twofish paper

第5页:

在第一轮Feistel轮之前对128位的子密钥进行xors运算,在最后一轮Feistel轮之后又对128位进行xors运算。这些子密钥的计算方式与循环子密钥相同,但在密码中的其他地方不使用。

第7页上的方程显示,输入白化是用前4ki完成的,输出白化是用下4ki完成的。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17012140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档