终端上的 SHA256 与 Node.js 提供两种不同的哈希值

发布于 2025-01-11 14:49:52 字数 752 浏览 0 评论 0原文

我想要得到一个 SHA256 哈希值,该哈希值与我在终端上得到的结果相同

echo -n "hello world" | shasum -0 -a 256

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

我尝试了两个不同的脚本

const {Sha256} = require('@aws-crypto/sha256-js');

(async () => {
    const hash = new Sha256();
    hash.update('hello world');
    const result = await hash.digest();
    let hex = Buffer.from(result).toString('hex');
    console.log(hex);
})()

var hash = require('hash.js')

console.log(hash.sha256().update('hello world').digest('hex'))

它们都给了我哈希值b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

如何从终端中的 shasum 获取相同的哈希值?

I want to get a SHA256 Hash that gives me the same result as I get on the terminal

echo -n "hello world" | shasum -0 -a 256

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

I tried two different scripts

const {Sha256} = require('@aws-crypto/sha256-js');

(async () => {
    const hash = new Sha256();
    hash.update('hello world');
    const result = await hash.digest();
    let hex = Buffer.from(result).toString('hex');
    console.log(hex);
})()

And

var hash = require('hash.js')

console.log(hash.sha256().update('hello world').digest('hex'))

They both give me the hash b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

How can I get the same hash from the shasum in my terminal?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

So要识趣 2025-01-18 14:49:52

如果你询问 shasum 的手册页,你会看到;

-0, --01 以 BITS 模式读取
                           ASCII '0' 解释为 0 位,
                           ASCII '1' 解释为 1 位,
                           所有其他字符均被忽略

仅从文件中读取 01(在您的情况下为管道)。现在删除参数 -0 或更好地定义默认值

-t, --text 以文本模式读取(默认)

$ echo -n "你好世界" | 256 | 沙苏姆-t-a切-c -64
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

现在我们有相同的输出。

注1cut用于删除末尾的空格和破折号。

不是 2: NIST 在 加密算法验证程序 和空字符串(长度 0)的 SHA-256 值如文件中所示SHA256ShortMsg.rsp;

<前><代码>长度 = 0
消息 = 00
MD = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

注3:对于NIST的哈希函数,不应依赖第三方结果。他们需要查看 NIST 矢量。

If you ask the man page of shasum you will see;

-0, --01          read in BITS mode
                           ASCII '0' interpreted as 0-bit,
                           ASCII '1' interpreted as 1-bit,
                           all other characters ignored

That reads only 0s and 1s from the file ( pipe in your case). Now remove the parameter -0 or better define the default

-t, --text read in text mode (default)

$ echo -n "hello world" | shasum -t -a 256 | cut -c -64
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Now we have the same output.

Note 1: that the cut is used to remove the space and dash in the end.

Not 2 : NIST has test vector in Cryptographic Algorithm Validation Program and SHA-256 value of empty string (length 0) is given as in the file SHA256ShortMsg.rsp;

Len = 0
Msg = 00
MD = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Note 3: For the NIST's hash function, one should not rely on the third-party result. They need to look at NIST vectors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文