问题标签 [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 回答
3114 浏览

ethereum - 如何在 Solidity 中获取 keccak256 哈希

我刚开始使用solidity,我已经使用truffle编译并部署代码到ganache,一切正常,我可以调用代码中的其他函数,但是有些函数只有所有者才能访问,代码似乎使用 keccak256 来取回调用函数的地址并确定是否允许调用者地址,我尝试使用此网站对我的 eth 地址进行哈希处理:

https://emn178.github.io/online-tools/keccak_256.html

然后在再次重新编译之前将哈希添加到代码中,但调用所有者函数仍然会抛出此错误:

“错误:处理事务时出现 VM 异常:还原”

我究竟做错了什么 ?

这是带有原始哈希的代码。

0 投票
1 回答
816 浏览

c - Round Constants in Keccak

Recently, just for the heck of it, I've been playing around with an attempt at implementing Keccak, the cryptographic primitive behind SHA-3. I've run into some issues however, specifically with calculating the round constants used in the "Iota" step of the permutation.

Just to get it out of the way: Yes. I know they are round constants. I know I could hard code them as constants. But where's the fun in that?

I've specifically been referencing the FIPS 202 specification document on SHA-3 as well as the Keccak team's own Keccak reference. However, despite my efforts, I can't seem to end up with the correct constants. I've never dealt with bit manipulation before, so if I'm doing something the complete wrong way, feel free to let me know.

rc is a function defined in the FIPS 202 standard of Keccak that is a linear feedback shift register with a feedback polynomial of x^8 + x^6 + x^5 + x^4 + 1.

The values of t (specific to SHA-3) are defined as the set of integers that includes j + 7 * i_r, where i_r = {0, 1, ..., 22, 23} and j = {0, 1, ..., 4, 5}.

The expected outputs (the round constants) are defined as follows: 0x0000000000000001, 0x0000000000008082, 0x800000000000808a, 0x8000000080008000, 0x000000000000808b, 0x0000000080000001, 0x8000000080008081, 0x8000000000008009, 0x000000000000008a, 0x0000000000000088, 0x0000000080008009, 0x000000008000000a, 0x000000008000808b, 0x800000000000008b, 0x8000000000008089, 0x8000000000008003, 0x8000000000008002, 0x8000000000000080, 0x000000000000800a, 0x800000008000000a, 0x8000000080008081, 0x8000000000008080, 0x0000000080000001, and 0x8000000080008008.

rc Function Implementation

rc Function Call

Any help on this matter is much appreciated.

0 投票
1 回答
604 浏览

c++ - C++ 使用 Keccak 库

我正在写我的学士论文,我必须测试一些后量子算法。我从 NIST 下载了它们。但是当我尝试 DAGS 时:https ://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/round-1/submissions/DAGS.zip并尝试“制作” dags3 或 dags5 我得到了这个错误:

encapsulation.o: 在函数encapsulation': encapsulation.c:(.text+0xeb): undefined reference toKangarooTwelve' encapsulation.c:(.text+0x13a): 对KangarooTwelve'encapsulation.c:(.text+0x478) 的KangarooTwelve' encapsulation.c:(.text+0x2c9): undefined reference to未定义引用KangarooTwelve' decapsulation.o: In function': decapsulation.c:(.text+0x16e ):未定义对KangarooTwelve' decapsulation.o:decapsulation.c:(.text+0x1bd): more undefined references toKangarooTwelve 的引用跟随 collect2:错误:ld 返回 1 退出状态 Makefile:22:目标“PQCgenKAT_kem”的配方失败 make:*** [PQCgenKAT_kem] 错误 1

我安装了 keccak 库,并且在这个算法中包含了 keccak 库。有任何想法吗?感谢您的任何帮助。

0 投票
1 回答
2685 浏览

node.js - npm 错误“Keccak 绑定编译失败。” 在安装松露时

我尝试安装 Truffle,但随后出现此错误:

我测试了松露命令,它们似乎可以工作,但我不知道为什么会出现这个错误......

(我需要更多的文字,所以这里有一个超级棒的 Hacker Ipsum:Haxx0r ipsum,它是一个功能客户端 python else packet sniffer epoch socket。Dennis Ritchie 堆栈竞争条件 pwnedwarez James T. Kirk 适当的小值。gc continue sql packet alloc jumpfrog less gcc shell bytes protected.)

谢谢您的帮助

0 投票
1 回答
554 浏览

javascript - 在 NodeJS 中获取上传文件的正确 Kekkak256

我正在使用 keccak256 npm 模块来计算上传文件的哈希值。我验证了正确性,我发现给定的哈希与某些在线哈希计算器上比较的哈希不对应(例如:thisthisthis)。

我运行的代码是:

任何人都可以向我解释我错在哪里以及如何纠正它?

0 投票
0 回答
265 浏览

ecdsa - 使用 Google Cloud Key Management Service 签署以太坊交易

我一直在为以太坊交易管理器编写签名服务,我需要使用Google KMS Golang APIs签署以太坊交易。我将尝试在下面总结我面临的问题。

以太坊需要在 R 中使用紧凑型 RLP 编码的 65 字节 ECDSA 签名 || 小号 || V 格式。另一方面,Google KMS 的 ECDSA 签名具有额外的标头组件(R 长度、S 长度等)以及可变长度的 R 和 S 组件。这使得这些签名与以太坊交易签名不兼容。

解决此问题的一种方法是从从 Google KMS 获得的 ecdsa 签名中解析 R 和 S 字节,计算并将 V 字节添加到末尾,并使用此签名来获得签名的以太坊交易。像这样的东西:

但是,由于以下一个或多个原因,这可能会失败:

  • 通过解析 R 和 S 分量并添加 V 分量来创建 65 字节长度的紧凑 ECDSA 签名可能和听起来一样不可信。上面提到的 R 和 S 组件对于标准 ECDSA 签名并不总是 32 字节长度,这意味着通过连接组件创建的 ECDSA 签名可能并不总是导致 64 字节。
  • 目前在以太坊中签名的交易是在 RLP 编码交易后从 Keccak-256 摘要哈希创建的,如下所示: Google KMS 中的非对称 ECDSA密钥签名不支持 Keccak-256 SHA3 消息摘要。将 SHA-256 摘要用于以太坊交易是否有效?IMO 这将失败,因为所有交易签名验证都发生在 RLP 编码的 Keccak 哈希上。
  • 在这一点上,在检查了函数的secp256k1 实现之后,我不太确定如何计算 ECDSA 签名的 V 分量secp256k1_ecdsa_sign_recoverable()

我该如何解决上述问题,以便能够使用 Google KMS 的非对称椭圆曲线签名算法创建可验证的签名以太坊交易?

0 投票
1 回答
217 浏览

javascript - Keccak on react-native

我尝试了ethereumjs-utilreact-native首先ethUtil.privateToPublic工作正常,然后在使用时ethUtil.publicToAddress会收到此错误TypeError: Cannot read property 'call' of undefined,我跟踪错误实际上来自Keccak

然后我自己尝试Keccak

也得到同样的错误TypeError: Cannot read property 'call' of undefined

0 投票
0 回答
41 浏览

javascript - Keccak -f Round constants 十六进制转二进制不是一个位

我正在使用 javascript 实现 Keccak-f ι 步骤,公式如下:

RC 是十六进制的圆形常量数组,而 A[0,0] 是二进制的单个位

问题出现在以下行

当我使用代码将 RC 转换为二进制时:

结果不是一个位,而是一个大数字 16975297,但我需要一个位。

我试图将大数 16975297 转换为二进制,但它也不是一个位。我需要一些帮助,谢谢!

0 投票
0 回答
341 浏览

java - Java Keccak-256 在零字节消息上实现不正确的哈希

我一直在尝试用 Java 编写自己的 Keccak-256 加密哈希函数实现。我一直在使用Keccak 规范摘要及其实施指南作为参考。我想使用零长度输入来测试我的实现。根据这个在线工具。零长度输入应该有一个散列:C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470但我的散列是别的东西。

我的代码位于Github上。我的想法是,在我将 byte[] 转换为 long 和返回的过程中,我必须在消息的填充(即所有被散列的内容)或字节顺序上做错了什么,或者在吸收/挤压阶段。在我的实现中,我只需要keccak-f[1600]这意味着每个通道中只有 64 位,并且每个块是 1088 位或 136 字节。我选择使用一个 5×5 的 2D 长数组来表示我的代码中的状态。

使用零字节消息意味着应该只有一个 136 字节的块,应该只是填充。根据这篇文章,因为 keccak 使用 little-endian,所以我的填充应该是这个字节顺序:

我查看了其他人的实现,但我似乎无法找出我的错误在哪里。

这是海绵函数:

这是我的垫功能:

这是我的 keccak 排列代码:

最后是辅助方法将 byte[] 转换为 long 并返回:

concatBytes 的最后一个辅助方法:

0 投票
0 回答
65 浏览

dart - js和dart用私钥生成地址的区别

我想把这个用js写的函数写到dart

js中的函数

我尝试在 pub spec.yaml 中使用插件:

我用飞镖编码:

js函数和dart函数之间的结果(eq.地址值)在相同的私钥值下是不一样的......

请问你能帮帮我吗