gpt4 book ai didi

python - RC-6密文与非0向量不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:24 25 4
gpt4 key购买 nike

我遇到了这个问题,我的 RC-6 算法没有生成它应该生成的密文(根据规范文档),为了更清楚,让我给你一个例子

enter image description here正如您所见,当纯文本和 key 由零字节组成时,它会通过测试 -> 密文和解密文本测试

为了更加澄清这一点,加密后的密码值(正确和错误)也以小端方式排序。

所以我的问题是 - 我应该在哪里寻找无效代码?

我有一种感觉,这与将其传递给加密或 key 调度函数之前的字节排序有关。

我传递给 key 调度和加密函数的值是 32 位字的简单数组(例如 [0x00,0x10,0x00,0x00]),然后我直接将其移至算法(其中我写的是查看伪代码),因此在此之前没有进行其他格式化。

它们的开头也如下:

def encrypt(plaintext,S):   
A,C = plaintext[0],plaintext[2]
B = modulus(plaintext[1]+S[0])
D = modulus(plaintext[3]+S[1])
for i in range(1,r+1):
....
def keyGenerator(L):
c = len(L)
S = [int(0)]* (2*r+4)
S[0] = P
....

我需要任何帮助..

提前谢谢您!

顺便说一句,官方测试向量可能在THIS中文档附录

最佳答案

所以我发现了这个案例中出了什么问题。确实是字节交换的问题。由于 0 是对称输入,因此它会通过,并且具有混合值的输入可以工作,但会给出错误的答案。

 def swap32(x):
return (((x << 24) & 0xFF000000) |((x << 8) & 0x00FF0000) |
((x >> 8) & 0x0000FF00) |((x >> 24) & 0x000000FF))

这个用于交换 8 字节 block 的函数在我的例子中非常有用。我必须在加密开始时刷 key 字节、明文字节,然后在加密结束时刷,然后在解密开始时和解密结束时刷。
我希望将来有人会发现这很有用,并且不会像我一样被困在同一个地方。干杯

关于python - RC-6密文与非0向量不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com