问题标签 [keccak]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5345 浏览

unit-testing - Keccak (SHA-3) 示例哈希(测试向量)是否可用?

我对实现 Keccak (SHA-3) 很感兴趣,并且想要一组输入/预期输出对来进行测试。是否发布了任何官方测试载体?我记得有一些用于其他 SHA 例程,它们非常有帮助。

0 投票
1 回答
12713 浏览

c# - Simple implementation of SHA-3 Keccak hashing to the wrong output in C#?

I am trying to get the HashLib library @ https://hashlib.codeplex.com/ working for the new SHA-3 Keccak algorithm. I've written a simple Console application that supposedly has to output the correct hash code, but it doesn't!

The application builds and runs ok, but the output is very wrong. When I use other people 's implementations of the Keccak algorithm, I get different results and it doesn't match for example this wiki post either. https://en.wikipedia.org/wiki/SHA-3 So something is obviously wrong.

When I leave the text empty, as per example, I get the following: "df987cfd23fbc92e7e87faaca300ec3f etc. etc." while the wiki and other tools say I should get

"0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e"

,which is something entirely different. I also tried it with non-empty strings of course.

Does anyone have a suggestion?

0 投票
3 回答
2956 浏览

php - 密码哈希:Keccak 与否

哈希算法竞赛的获胜者SHA-3已被选中。获胜者的算法是Keccak

我使用 Blowfish 并且非常喜欢它,但据说 Keccak 更好。是否值得将其用于在我的网站上存储用户密码?

如果是,是否有任何用于 Web 编程的 PHP、Python、Ruby 或任何其他语言的 Keccak 实现?

我希望这个问题对其他人也有帮助。谢谢!

0 投票
1 回答
1309 浏览

java - 意外的 keccak 输出

我正在试验 Java 的各种Keccak实现。 到目前为止,这个实现是最有希望的,但是我得到了奇怪的结果。测试用例在这里定义(尽管我直接使用十六进制字符串,根据测试向量)。当前(和正确的)测试向量在此处以绿色定义(为了方便起见,我提供了链接,以使任何人不必从网站下载官方测试向量 zip 文件)。

对于初学者,我不了解测试向量中“len”和“msg”字段之间的相关性。'Len' 应该是 'msg' 的长度,以位为单位。例如,'len' = 5,'msg' = "48"(一个十六进制字符串),我认为 2 个十六进制数字 = 1 个字节,这 = 8 位。我错过了什么?

我只得到以下长度的输入的正确摘要(根据测试向量):16、24、40、56、64、72、112 和 128(其中长度对应于测试向量,输入是'msg')。但是,我得到的长度值:32、48、80、88、96、104 与测试向量不匹配。任何人都可以对为什么会发生这种情况做出有根据的猜测吗?当然,如果有人可以推荐 Java 中的不同实现,我将不胜感激。

0 投票
2 回答
1546 浏览

hash - 削减哈希是否安全?

我想存储大约 20 亿个字符串的哈希值。为此,我想使用尽可能少的存储空间。

考虑一个理想的散列算法,它将散列返回为一系列十六进制数字(如 md5 散列)。据我了解这个想法,这意味着我需要哈希不小于且不超过 8 个符号的长度。因为这样的散列能够散列 4+ 十亿(16 * 16 * 16 * 16 * 16 * 16 * 16 * 16)不同的字符串。

所以我想知道将哈希切割到一定长度以节省空间是否安全?(当然,哈希不应该冲突)

是/否/也许-我希望能提供相关研究的解释或链接的答案。

Ps - 我知道我可以测试 8 个字符的哈希是否可以存储 20 亿个字符串。但我需要将 20 亿个哈希值与它们的 20 亿个切割版本进行比较。这对我来说似乎并不重要,所以我最好在这样做之前先问清楚。

0 投票
2 回答
7048 浏览

cryptography - keccak算法如何解密

我正在准备关于 Keccak 的演示文稿 ( http://keccak.noekeon.org/ )。

在那个演示文稿中,我想加密一个纯文本——这会带来以下问题:

  1. 填充函数的确切作用是什么(我们如何从 64 位获得 1600 位的立方体)?
  2. 加密文本后,我们如何再次解密呢?
0 投票
1 回答
1410 浏览

c# - C# 加密库 hashlib 的实现是否正确

哈希库团队,

我不确定 SHA3 库 (Keccak) 是否返回正确的加密。我使用了从 codeplex 下载的最新源代码(变更集 78295),但它与维基百科(sha3 页面)中提供的向量和结果不匹配

当我使用以下代码时

在我的 VS 2012 IDE 中,我得到的结果是

这实际上应该返回:

根据以下帖子简单实现 SHA-3 Keccak 散列到 C# 中的错误输出?David 回答说最新的代码库应该返回正确的结果。我不确定更改是否到位。

当我使用从文件 ExtremelyLongMsgKAT_512.txt 中获取的测试向量时

并使用代码

结果也与预期不同。测试向量文件说结果是:

然而,实际结果是

0 投票
1 回答
1063 浏览

c - 从字节转换为字

在花了很长时间试图理解这个方法的功能之后,我仍然不知道它有什么作用。据我了解,stateAsBytes 应该包含像“\xA1\X32\X89\XB2”这样的十六进制字符串,有什么作用stateAsWords[i%5][i/5] |= (unsigned long )(stateAsBytes[i*(64/8)+j]) << (8*j)?为什么它使用按位赋值?

0 投票
1 回答
475 浏览

javascript - CryptoJS SHA3 没有通过任何 Keccak 测试向量?

我试图让 CryptoJS 通过 Keccak 的一些已知答案测试,但它似乎给了我不正确的摘要哈希。

单击Keccak 下载页面上的“已知答案和蒙特卡洛测试结果”链接,或直接转到zip 文件

我一直在使用 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();

但是我尝试的其他测试失败了。知道发生了什么吗?

  • 一种可能性是自从 CryptoJS 作者编写代码以来,Keccak 团队已经更新了算法和测试向量。有没有办法在其源代码管理中查看与当前 CryptoJS.SHA3 代码匹配的原始测试向量?我想我看到了他们的在线源代码控制(CVS?)的链接,但现在找不到。

  • 另一种可能性是我使用了错误的测试向量文件。有谁知道 CryptoJS.SHA3 内部使用了哪些速率容量设置以及与之匹配的测试向量?

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

0 投票
1 回答
5067 浏览

php - 理解 SHA-3 Keccak 哈希算法实现的简单方法

我一直在互联网上寻找有关算法 keccak 的参考资料,但没有一个能让我理解。

这是我找到的一些链接。

有没有办法轻松理解实现或算法 keccak?是否有关于该算法的 PHP 实现的代码?