首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECRYPT Salsa20测试矢量解释

ECRYPT Salsa20测试矢量解释
EN

Cryptography用户
提问于 2020-05-30 10:56:34
回答 1查看 373关注 0票数 1

我目前正在为我的学士论文实现Salsa20。在用DJB的规范中给定的测试数据验证了最终加密函数所需的所有函数之后,我想测试我的加密函数。不幸的是,规范文件中没有用于完全加密的测试向量:

我已经从ECRYPT流密码项目这里中找到了Salsa20 20/20的测试向量。

但出于某种原因,第一个64字节序列与我的扩展函数的输出匹配,给定的键和IV和计数器设置为0,但第二个64字节序列不同。

实际:

代码语言:javascript
复制
0xa360370ff47dd714684fd47584e46fe89e031b59072be978f7c0a56936151a3e9c52f7be26c687a5bc234640efed47b79b02d70dd666dc39cea9288e69427318

预期:

代码语言:javascript
复制
0x57be81f47b17d9ae7c4ff15429a73e10acf250ed3a90a93c711308a74c6216a9ed84cd126da7f28e8abf8bb63517e1ca98e712f4fb2e1a6aed9fdc73291faa17

我使用了IV 0x0 (64位)和计数器0x1 (64位)的连接,因此给展开函数的现在是

代码语言:javascript
复制
0x00 00 00 00 00 00 00 00   00 00 00 00 00 00 00 01 

(大本营)但是,正如上面所示,这会导致一个不正确的结果。

我尝试用littleendian编写计数器的字节,因为规范文件在关于加密的最后一节中提到了这一点:

代码语言:javascript
复制
0x00 00 00 00 00 00 00 00    01 00 00 00 00 00 00 00

但这只会导致不同的错误结果:

代码语言:javascript
复制
0x8da2b74eef1b6283e7e20166abcae538e9716e4669e2816b6b20c5c356802001cc1403a9a117d12a2669f456366d6ebb0f1246f1265150f793cdb4b253e348ae

,我假设我误解了测试数据,因为我的扩展函数通过了所有测试,测试数据在规范.

中给出。

我发现这里测试向量使用NESSIE格式,但无法解释解决问题的数据(可能没有解释,因为我做了完全错误的事情)。

我也很困惑“(流是通过加密512个零字节生成的)”应该是什么意思。流是独立于明文的;因此,我想知道他们所说的“通过加密512个零字节生成”是什么意思??

如果有人能帮助我或引导我朝着正确的方向前进,我将非常高兴,因为我已经被困在这个问题上已经好几天了。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-05-30 23:33:26

您的“不同的错误结果”(基于少量的计数器)似乎是正确的第二个64字节序列。测试向量显示"stream192.255 = ",这是第四个64字节的序列。测试向量是通过使用指定的密钥和IV在512个零字节上调用“Salsa20加密函数”(规范第10节)来生成的。

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

https://crypto.stackexchange.com/questions/81087

复制
相关文章

相似问题

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