首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RC-6密文不匹配非0向量。

RC-6密文不匹配非0向量。
EN

Stack Overflow用户
提问于 2018-03-30 10:15:46
回答 1查看 76关注 0票数 1

在这个问题上,我的RC-6算法没有生成密码文本--它应该(由规范文档编写)--为了更清楚,让我给您举一个例子。

正如您所看到的,当纯文本和密钥由零字节组成时,它通过了->密码文本和解密文本测试。

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

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

我有一种感觉,在将字节排序传递给加密或密钥调度函数之前,它与字节排序有关。

我传递给密钥调度和加密函数的值是由32位单词(例如[0x00,0x10,0x00,0x00])组成的直接数组,然后我直接将其移到算法(我编写了该算法,查看伪代码),因此在此之前不进行其他格式化。

它们还从以下方面开始:

代码语言:javascript
复制
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文档的附录中

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-30 11:58:08

所以我发现了这个案子出了什么问题。这确实是一个交换字节的问题。由于0是对称输入,它会通过,而带有混合值的输入是有效的,但是给出了错误的答案。

代码语言:javascript
复制
 def swap32(x):
    return (((x << 24) & 0xFF000000) |((x <<  8) & 0x00FF0000) |
        ((x >>  8) & 0x0000FF00) |((x >> 24) & 0x000000FF)) 

这个函数,用于交换8字节块,在我的例子中非常有用。我必须滑动密钥字节,要求加密的明文字节,然后在加密结束时,在解密和解密结束时。

我希望将来有人会发现这是有用的,不会像我那样被困在同一个地方。Cheers

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

https://stackoverflow.com/questions/49572560

复制
相关文章

相似问题

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