问题标签 [sha-3]
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.
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 的非对称椭圆曲线签名算法创建可验证的签名以太坊交易?
macos - 无法在 macos 上安装 web3
我在我的 Mac 上安装 web3 时遇到了困难。我尝试了许多修复程序,但每次都遇到相同的错误。
我尝试单独安装 sha3 并确保安装了 Xtools。
c# - How can i get sha3-512 hash in C#?
exaple, string "test" in https://md5calc.com/hash/sha3-512/test gives me "9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14"
but
returns "3abff7b1f2042ac3861bd4c0b40efaa8a695909bfb31753fc7b1bd69778de1225a627c8f07cf4814cc05435ada2a1ffee3f4513a8867154274787624f24e551b"
i need to get first string, not that hashlib provides.
javascript - Google 电子表格中单元格文本的 sha3-256
我知道你可以在谷歌表格上做 sha1 和其他人,但有没有办法做 sha3-256
javascript - cryptojs 和 golang 给出不同的 sha3 哈希值
我正在尝试在 JS 中生成一个 sha3-512 哈希并在 golang 服务器中检查它。然而,cryptoJS 产生的哈希值与 golang 不同。
加密货币:
输出:
1597842aac52bc9d13fe249d808afbf44da13524759477404c3592ee331173e89fe1cbf21a7e4360990d565fad4643cdb209d80fa41a91dea97e665022c92135
戈朗:
输出:
666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
我希望这些哈希值相等,但它们不是
php - 立方体哈希。纯 PHP 实现。多字节块问题(CubeHash160+16/32+160-256)
我是密码学的新手。
我正在尝试在纯 PHP 上实现 CubeHash 散列函数。b
我已经将一些 JS 版本(32 位)移植到 PHP(64 位),但是当它大于 1(块大小大于 1 字节)时,我无法使用参数实现 CubeHash 。
请帮我。
在线运行:https ://repl.it/repls/FreshWickedHashfunction
更新:
从文档:
CubeHash 维护一个 128 字节的状态。它将第一个 b 字节输入块异或到状态的前 b 个字节,通过 r 个相同的轮次可逆地变换状态,将下一个 b 字节输入块异或到状态的前 b 个字节,通过 r 可逆地变换状态相同的轮次,将下一个 b 字节输入块异或到状态的前 b 个字节,通过 r 个相同的轮次可逆地转换状态,等等。
hash - SHA-3:根据 FIPS-202 执行的 Theta 函数未按预期执行
我正在按照 Verilog 中的官方FIPS-202 文档实施 SHA-3。我的状态由一维寄存器表示,我使用宏函数从文档中的 (x,y,z) 坐标计算相应的状态索引:
A[x, y, z] = S [W(5y + x) + z]
,W = 64
(第 9 页)
我严格遵循第 11 页上的指南并提出以下建议:
我目前面临的问题似乎在 Theta 函数中。例如对于 SHA-224,一个空消息应该产生中间结果和最终输出,如本文档所示。
奇怪的是,我得到相同的absorbed_data
( 06 00 ... 00 80
) 但不同的值C
和D
:
C
D
首先,C
位顺序似乎不同,但不是在位级别上而是在字节级别上(如06
保持06
)。其次,因为D
我得到06 00 .. 01 00
了正确的结果应该是00 .. 00 07
. 这对我的实现来说是不可能的,因为根据 FIPS-202,at 的位z
只能移动一个位置 ( (z - 1) mod w
)。
在未来的情况下D
将产生正确的结果,因为06 ^ (80 << 1) = 07
.
总之,我会说我的实现行为与 FIPS-202 中的定义所期望的一样,对吗?
知道我在这里做错了什么吗?
提前致谢!
cryptography - 将 sha2/sha3 截断到 16 字节是否比使用 crc32 更糟糕,而 crc32 本身就提供 16 个字节?
我在 CBC 模式下使用 AES128,我需要一个 16 字节的密钥,所以我想知道是否使用 sha2 或 sha3 然后将其截断为 16 个字节(从左边开始取前 16 个字节)会使 sha2/sha3 比 crc32 弱这给了我开箱即用的 16 个字节。
dart - js和dart用私钥生成地址的区别
我想把这个用js写的函数写到dart
js中的函数
我尝试在 pub spec.yaml 中使用插件:
我用飞镖编码:
js函数和dart函数之间的结果(eq.地址值)在相同的私钥值下是不一样的......
请问你能帮帮我吗
perl - perl:使用 Digest::SHA3,使用网上的基本示例,输出的位值将其设置为 160,这表示哈希长度较弱(?)
我正在使用以下代码来学习/熟悉单向密码加密、加盐和使用它们来验证用户登录。
它有效,我将散列密码和盐值存储在我的数据库中,我可以检索两者并与纯文本密码进行比较,没问题。
我的问题是关于输出、它的安全性等。
这给出了类似于
当我获取该值并通过文本到字节转换器(在线)运行它时,我得到
我相信是160位。因为我对哈希和位真的很陌生,所以我很困惑。
我的想法是 SHA3 是 256 位及以上,那么为什么输出是 160 位。我什至可能误解了数据,甚至是我从研究中收集到的信息,所以请原谅我。
另外,我确信有更容易/更好/更强/任何方式来实现我的目标,但我认为我的问题更多的是理解位长度等。
另外,我读到最好使用等于输出字符长度的盐值长度,这意味着我的盐值将是 56 个字符,就像我上面的 SHA3 输出一样?我正在考虑使用一些基本的东西,例如
我确实读过一些可以给我真正随机盐值的模块,我对这些很感兴趣,但是我的 while 循环似乎正在完成任务,但是没有必要使用 56 个字符的盐值。
任何帮助和指导都会很甜蜜。谢谢!
- 产生