问题标签 [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.

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 投票
0 回答
484 浏览

macos - 无法在 macos 上安装 web3

我在我的 Mac 上安装 web3 时遇到了困难。我尝试了许多修复程序,但每次都遇到相同的错误。

我尝试单独安装 sha3 并确保安装了 Xtools。

0 投票
1 回答
8228 浏览

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.

0 投票
2 回答
1101 浏览

javascript - Google 电子表格中单元格文本的 sha3-256

我知道你可以在谷歌表格上做 sha1 和其他人,但有没有办法做 sha3-256

0 投票
2 回答
705 浏览

javascript - cryptojs 和 golang 给出不同的 sha3 哈希值

我正在尝试在 JS 中生成一个 sha3-512 哈希并在 golang 服务器中检查它。然而,cryptoJS 产生的哈希值与 golang 不同。

加密货币:

输出:

1597842aac52bc9d13fe249d808afbf44da13524759477404c3592ee331173e89fe1cbf21a7e4360990d565fad4643cdb209d80fa41a91dea97e665022c92135


戈朗:

输出:

666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26

我希望这些哈希值相等,但它们不是

0 投票
1 回答
136 浏览

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 个相同的轮次可逆地转换状态,等等。

0 投票
1 回答
141 浏览

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) 但不同的值CD

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 中的定义所期望的一样,对吗?

知道我在这里做错了什么吗?

提前致谢!

0 投票
2 回答
291 浏览

cryptography - 将 sha2/sha3 截断到 16 字节是否比使用 crc32 更糟糕,而 crc32 本身就提供 16 个字节?

我在 CBC 模式下使用 AES128,我需要一个 16 字节的密钥,所以我想知道是否使用 sha2 或 sha3 然后将其截断为 16 个字节(从左边开始取前 16 个字节)会使 sha2/sha3 比 crc32 弱这给了我开箱即用的 16 个字节。

0 投票
0 回答
65 浏览

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

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

js中的函数

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

我用飞镖编码:

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

请问你能帮帮我吗

0 投票
1 回答
37 浏览

perl - perl:使用 Digest::SHA3,使用网上的基本示例,输出的位值将其设置为 160,这表示哈希长度较弱(?)

我正在使用以下代码来学习/熟悉单向密码加密、加盐和使用它们来验证用户登录。

它有效,我将散列密码和盐值存储在我的数据库中,我可以检索两者并与纯文本密码进行比较,没问题。

我的问题是关于输出、它的安全性等。

这给出了类似于

当我获取该值并通过文本到字节转换器(在线)运行它时,我得到

我相信是160位。因为我对哈希和位真的很陌生,所以我很困惑。

我的想法是 SHA3 是 256 位及以上,那么为什么输出是 160 位。我什至可能误解了数据,甚至是我从研究中收集到的信息,所以请原谅我。

另外,我确信有更容易/更好/更强/任何方式来实现我的目标,但我认为我的问题更多的是理解位长度等。

另外,我读到最好使用等于输出字符长度的盐值长度,这意味着我的盐值将是 56 个字符,就像我上面的 SHA3 输出一样?我正在考虑使用一些基本的东西,例如

我确实读过一些可以给我真正随机盐值的模块,我对这些很感兴趣,但是我的 while 循环似乎正在完成任务,但是没有必要使用 56 个字符的盐值。

任何帮助和指导都会很甜蜜。谢谢!

  • 产生