CryptoJS SHA3不通过任何Keccak测试向量?

时间:2014-04-28 01:33:41

标签: javascript unit-testing hash cryptography keccak

我正在尝试让CryptoJS为Keccak传递一些已知的答案测试,但它似乎给了我不正确的摘要哈希值。

点击Keccak downloads page上的“已知答案和蒙特卡罗测试结果”链接,或直接转到the zip file

我一直在测试CryptoJS.SHA3并使用ShortMsgKAT_512.txt或LongMsgKAT_512.txt中的测试向量。不幸的是,我不能让它匹配任何测试向量栏一。我确实通过测试的是LongMsgKAT.txt中的第一个测试:

var message = '724627916C50338643E6996F07877EAFD96BDF01DA7E991D4155B9BE1295EA7D21C9391F4C4A41C75F77E5D27389253393725F1427F57914B273AB862B9E31DABCE506E558720520D33352D119F699E784F9E548FF91BC35CA147042128709820D69A8287EA3257857615EB0321270E94B84F446942765CE882B191FAEE7E1C87E0F0BD4E0CD8A927703524B559B769CA4ECE1F6DBF313FDCF67C572EC4185C1A88E86EC11B6454B371980020F19633B6B95BD280E4FBCB0161E1A82470320CEC6ECFA25AC73D09F1536F286D3F9DACAFB2CD1D0CE72D64D197F5C7520B3CCB2FD74EB72664BA93853EF41EABF52F015DD591500D018DD162815CC993595B195;'

var correctResult = '4E987768469F546296AD1A43D54C0A0A6C87E7E4E26B686612B1E5B1554B689BFFD56D6A4B454CE4A5717625BBAD321F8D05F19C225259646F21416AA2D7C2ED';

我通过以下代码传递了这个:

var words = CryptoJS.enc.Hex.parse(message.toLowerCase()); var testResult = CryptoJS.SHA3(words, { outputLength: 512 }).toString();

然而,我试过的其他测试失败了。知道发生了什么事吗?

  • 一种可能性是Keccak团队更新了算法和 测试向量自CryptoJS作者编写代码。有办法吗? 查看源控件中的原始测试向量 匹配当前的CryptoJS.SHA3代码?我想我看到了一个链接 他们的在线资源控制(CVS?)但现在找不到它。

  • 另一种可能性是我使用了错误的测试矢量文件。是否 任何人都知道内部使用评分容量设置 通过CryptoJS.SHA3和哪些测试向量匹配?

理想情况下,加密库应具有单元测试套件,以证明其实现是正确的并且与参考测试向量匹配。否则我们不能相信实施。希望有一个旧版本的测试向量与此CryptoJS库匹配,否则我将不得不放弃该库。

1 个答案:

答案 0 :(得分:0)

我知道你说所有测试都失败了,但只是确认:每8次测试都失败了吗?在我的C#端口中,测试结果是使用子字节提供的,所以我必须使用每第8个测试,因为只支持整个字节。