我试图弄清楚如何生成 Twofish 密码扩展密钥。
目前,我已经弄清楚首先生成密钥的一部分,用于白化,然后在每一轮中生成 2x32bit 的密钥部分。
密钥的第一部分由 3 个向量组成,Mo、Me 和 S。
Mo 和 Me 是通过将主键扩展为第一个定义的长度,并将其拆分为偶数和奇数 32b 个单词来生成的,然后将它们放入 Mo 和 Me 向量中。
另一方面,向量 S 由 k 个单词组成,其中 k = N/64,在 N=128 的情况下,S 包含 2x32b 个单词。
所以,我们得到了 Mo(2x32) + Me(2x32) + S(2x32) + 16x2x32 = 38 个 32 位字。少了2个字。为什么??
如果 N=192 或 N=256 会怎样?扩展密钥如何是 40 个 32 位字而不是 41 和 44?
任何帮助都会很棒。
谢谢