问题标签 [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.
ethereum - 如何在 Solidity 中获取 keccak256 哈希
我刚开始使用solidity,我已经使用truffle编译并部署代码到ganache,一切正常,我可以调用代码中的其他函数,但是有些函数只有所有者才能访问,代码似乎使用 keccak256 来取回调用函数的地址并确定是否允许调用者地址,我尝试使用此网站对我的 eth 地址进行哈希处理:
https://emn178.github.io/online-tools/keccak_256.html
然后在再次重新编译之前将哈希添加到代码中,但调用所有者函数仍然会抛出此错误:
“错误:处理事务时出现 VM 异常:还原”
我究竟做错了什么 ?
这是带有原始哈希的代码。
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.
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 to
KangarooTwelve' 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 to
KangarooTwelve 的引用跟随 collect2:错误:ld 返回 1 退出状态 Makefile:22:目标“PQCgenKAT_kem”的配方失败 make:*** [PQCgenKAT_kem] 错误 1
我安装了 keccak 库,并且在这个算法中包含了 keccak 库。有任何想法吗?感谢您的任何帮助。
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.)
谢谢您的帮助
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 的非对称椭圆曲线签名算法创建可验证的签名以太坊交易?
javascript - Keccak on react-native
我尝试了ethereumjs-util
,react-native
首先ethUtil.privateToPublic
工作正常,然后在使用时ethUtil.publicToAddress
会收到此错误TypeError: Cannot read property 'call' of undefined
,我跟踪错误实际上来自Keccak
。
然后我自己尝试Keccak:
也得到同样的错误TypeError: Cannot read property 'call' of undefined
javascript - Keccak -f Round constants 十六进制转二进制不是一个位
我正在使用 javascript 实现 Keccak-f ι 步骤,公式如下:
RC 是十六进制的圆形常量数组,而 A[0,0] 是二进制的单个位
问题出现在以下行
当我使用代码将 RC 转换为二进制时:
结果不是一个位,而是一个大数字 16975297,但我需要一个位。
我试图将大数 16975297 转换为二进制,但它也不是一个位。我需要一些帮助,谢谢!
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 的最后一个辅助方法:
dart - js和dart用私钥生成地址的区别
我想把这个用js写的函数写到dart
js中的函数
我尝试在 pub spec.yaml 中使用插件:
我用飞镖编码:
js函数和dart函数之间的结果(eq.地址值)在相同的私钥值下是不一样的......
请问你能帮帮我吗