问题标签 [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 投票
2 回答
1273 浏览

java - 为什么 BouncyCastle Keccak sha-384 和 MessageDigest sha-384 有不同的输出?

哈希一个只有一个字节的数组的简单示例:

该程序的输出如下:

答:[-115、44、-24、125、-122、-11、95、-49、-85、119、10、4、123、9、13、-94、50、112、-6、32 , 104, 50, -33, -22, 126, 12, -108, 111, -1, 69, 31, -127, -102, -35, 36, 35, 116, -66, 85, 27, 13 , 99, 24, -19, 108, 125, 65, -40]

B:[45、-11、56、-101、-127、15、27、78、83、13、3、-41、58、-24、82、-74、37、-120、-70、20 , 26, 16, 66, 76, 2, 104, -22, -24, -58, 79, -81, 58, -71, 1, -14, -115, -27, 85, 73, -70, -8、113、-67、-93、-19、62、-15、65]

他们不应该是一样的还是我错过了什么?

使用的 BouncyCastle 版本: https ://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on/1.58

Java:jdk1.8.0_121

0 投票
4 回答
7316 浏览

openssl - 使用 OpenSSL 库在 C++ 中生成 SHA-3 哈希

我已经广泛搜索了一个使用 OpenSSL 最近实现的 SHA-3 算法进行散列但找不到任何代码示例。有关于 SHA-1 和 SHA-3 的代码示例,但在库文件夹中快速搜索会发现 OpenSSL v1.1.1 中甚至没有 SHA3 函数名称?

我到处搜索,但这是相对较新的,我无法找到任何专门关于新算法的信息。

我发现使用 OpenSSL 库在 C++ 中生成 SHA 哈希的线程涵盖 SHA-1 和 SHA-2,但库中实际上没有 SHA3 函数 - Keccak1600 似乎是 SHA-3 的名称?

0 投票
1 回答
523 浏览

c++ - 使用 cryptopp 生成 SHA3 哈希的不正确行为

我发现在 RHEL7 和 Debian9 上使用 cryptopp 生成 SHA3 哈希的行为存在非常奇怪的差异。如果我使用 SHA1 或 MD5 哈希,则两个平台上的输出是相同的。我已将其简化为以下最小程序:

在 Debian 上,输出为:

根据https://emn178.github.io/online-tools/sha3_256.html的在线转换器,这是正确的

但是在 RHEL7 上,输出很奇怪:

因此,要么我做错了什么,要么库中存在错误或安装错误。

我在滥用 libcrytopp 吗?像缺少 MessageEnd() 之类的东西?

在 RHEL7 上:

在 Debian 上:

在两个平台上似乎都是 v6.0.0,但是:

0 投票
1 回答
507 浏览

c# - Base-64 字符数组或字符串的长度无效:C#

我是 C# 新手,在我的 Web API 项目中,我有一些代码用于使用 SHA3 对用户密码进行哈希处理。

在 API 我有 2 种方法

第一种方法用于新用户创建帐户时,我只是对密码进行哈希处理并将其存储在表中。

第二种方法是当同一个用户再次登录时,我获取散列密码(字符串)并用它验证当前密码。

在这里,我遇到了标题中提到的错误,并且我在 SO 中也提到了一些相关的帖子,但我无法解决这个问题。

我已经验证存储和获取的字符串具有相同的字符,生成和存储的字符串也具有相同的字符。

我不知道我在哪里做错了。

调用确认方法

确认

但是当我检查这样的代码时它工作正常......

在这里,我传递密码以生成哈希和确认哈希,但它返回TRUE

谁能帮我解决这个问题。

参考:https ://www.youtube.com/watch?v=0dgTf9TUDHU

0 投票
0 回答
729 浏览

asp.net-core - 在 netcore2.1 中生成 HMAC SHA3-512

我已经找到了一些如何在 netcore 2.1 中生成 SHA3 的方法。(例如 SHA3.Net)。有没有办法使用 SHA3-512 哈希函数生成 HMAC。AFAIK 它应该只是 SHA3(秘密 + 内容)的某种组合,但我找不到任何基于 SHA3-512 的 HMAC 工作解决方案。它是由我需要使用的第 3 方 API 请求的,因此没有其他选择。

结果必须与此在线工具提供的结果相同(哈希类型 sha3-512):https ://wtools.io/generate-hmac-hash

有人知道如何在 .netcore 2.1 下为 SHA3-512 正确生成 HMAC 吗?

谢谢

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 回答
124 浏览

javascript - sha3 输出可以用作文件名吗?

  1. sha3 输出可以用作文件名吗?

  2. 换个说法的问题:sha3 输出中的字符是什么?

  3. 如果这是特定于实现的,我使用的是sha3 npm package

0 投票
0 回答
108 浏览

python - 剪刀石头布 HMAC(SHA-3 或 SHA-2)加密

我有一个游戏(石头剪刀布)。如何使用 HMAC(SHA-2 或 SHA-3)加密计算机的答案并在游戏结束时与用户的答案进行比较?

0 投票
0 回答
1105 浏览

c++ - 如何使用 openssl 1.1.1a 生成 SHA3

编辑:我从这个问题中提取了 SHA3 代码(使用 OpenSSL 库在 C++ 中生成 SHA-3 哈希)并且 SHA3 在 openssl 1.0.2q(但不是 1.0.2r)版本中。

我正在尝试使用 openssl 库生成 SHA3。

上面的代码适用于我的个人 Mac(使用 openssl 1.0.2q 2018Nov),但不适用于服务器(Ubuntu 16.04,openssl version=1.1.1a)。编译时使用

它给

我查阅了 openssl 手册,但它不是很有帮助。我在这里错过了什么吗?提前致谢。

顺便说一句,建议我不要降级 openssl 来解决问题。

0 投票
1 回答
191 浏览

c - 空文件的 SHA-3 摘要

我在 C 中实现了 SHA-3 哈希算法,它适用于非空文件,但是当我尝试获取空文件的摘要时,我得到了错误的摘要。

例如,如果散列一个只有“a”字母的文件,我得到:

be5215abf72333a73b992dafdf4ab59884b948452e0015cfaddaa0b87a0e4515

但是,当我散列空文件时,我得到

000000000000000000000000000000000000000000000000000000000000000000

我期望:

a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

https://en.wikipedia.org/wiki/SHA-3#Examples_of_SHA-3_variants

谁能告诉我我的实施有什么问题?