Cryptography RC2关键时刻表

Cryptography RC2关键时刻表,cryptography,rc2-cipher,Cryptography,Rc2 Cipher,有人能解释一下RC2密钥计划是如何工作的吗(尤其是在其开始阶段)?我知道它使用little endian,但我的实现对除“0000”以外的任何键都不起作用 我想第一件要做的事情就是把它改成 bc88 0ea9 8790 5a 是的,我知道RC2已经不再使用了,但我还是想知道RFC说: 密钥扩展算法首先将提供的T字节密钥放入密钥缓冲区的字节L[0]、…、L[T-1]中 因此,如果您的密钥是88bc a90e 9087 5aL[0]=0x88,L[1]=0xbc。。。L[6]=0x5a 不必考虑这

有人能解释一下RC2密钥计划是如何工作的吗(尤其是在其开始阶段)?我知道它使用little endian,但我的实现对除“0000”以外的任何键都不起作用

我想第一件要做的事情就是把它改成

bc88 0ea9 8790 5a
是的,我知道RC2已经不再使用了,但我还是想知道RFC说:

密钥扩展算法首先将提供的T字节密钥放入密钥缓冲区的字节L[0]、…、L[T-1]中

因此,如果您的密钥是
88bc a90e 9087 5a
L[0]=0x88,L[1]=0xbc。。。L[6]=0x5a

不必考虑这里的任何附属物。

如果要将密钥缓冲区视为16位字,您可以得到:

K[i]=L[2*i]+256*L[2*i+1]

K[0]=0xbc88,K[1]=0xa90e,K[2]=0x8790
。L[7]仅在密钥扩展步骤的后面分配,因此严格来说K[3]在这一点上是未定义的。但是,您可以随意选择任何您想要的值,因为它对算法没有影响。如果选择0,则会得到
K[3]=0x005a

RFC显示:

密钥扩展算法首先将提供的T字节密钥放入密钥缓冲区的字节L[0]、…、L[T-1]中

因此,如果您的密钥是
88bc a90e 9087 5a
L[0]=0x88,L[1]=0xbc。。。L[6]=0x5a

不必考虑这里的任何附属物。

如果要将密钥缓冲区视为16位字,您可以得到:

K[i]=L[2*i]+256*L[2*i+1]


K[0]=0xbc88,K[1]=0xa90e,K[2]=0x8790
。L[7]仅在密钥扩展步骤的后面分配,因此严格来说K[3]在这一点上是未定义的。但是,您可以随意选择任何您想要的值,因为它对算法没有影响。如果选择0,则得到
K[3]=0x005a

hm。。。我在使用30000000000000000键时遇到了问题(其余的值都在rfc中)。出于某种原因,这是唯一一个破坏加密的密钥。有什么想法吗?没有。如果您能为/all/其他键获得正确的值,我猜您可能在某个地方进行了错误的转录。使用测试向量的键或明文,或者在输入PITABLE时(如果您不只是复制“n”粘贴它)。您需要首先选择有效键位T1的数量。其他常数(T8,TM)由此导出。顺便问一下,您如何知道您的问题在密钥扩展中?它可能在其他步骤中。T1=64。如果PITABLE是错的,或者其他测试向量中的一个肯定是错的,这就没有意义了(我会检查)。我检查了输入,它们是正确的测试向量,键=3000。。。是纯文本不包含8个相同字节的唯一一个。因此,您可能在将明文映射到R[0]的方式上犯了错误,。。R[3]。你能正确地解密测试向量吗?下面是来自测试向量的一些中间值:扩展键应该是K[0]=0xd4ef。。。K[63]=0x025c和R[0]=0x0010,R[1]=0x0000,R[2]=0x0000,R[3]=0x0100.hm。。。我在使用30000000000000000键时遇到了问题(其余的值都在rfc中)。出于某种原因,这是唯一一个破坏加密的密钥。有什么想法吗?没有。如果您能为/all/其他键获得正确的值,我猜您可能在某个地方进行了错误的转录。使用测试向量的键或明文,或者在输入PITABLE时(如果您不只是复制“n”粘贴它)。您需要首先选择有效键位T1的数量。其他常数(T8,TM)由此导出。顺便问一下,您如何知道您的问题在密钥扩展中?它可能在其他步骤中。T1=64。如果PITABLE是错的,或者其他测试向量中的一个肯定是错的,这就没有意义了(我会检查)。我检查了输入,它们是正确的测试向量,键=3000。。。是纯文本不包含8个相同字节的唯一一个。因此,您可能在将明文映射到R[0]的方式上犯了错误,。。R[3]。你能正确地解密测试向量吗?下面是来自测试向量的一些中间值:扩展键应该是K[0]=0xd4ef。。。K[63]=0x025c和R[0]=0x0010,R[1]=0x0000,R[2]=0x0000,R[3]=0x0100。
bc88 0ea9 8790 5a