用 JavaScript 计算 SHA-256 hash值

本文介绍了如何在JavaScript中(特别是浏览器和Node.js环境)使用SHA-256算法生成散列值,包括使用WebCryptoAPI的SubtleCrypto接口以及Node.js内置加密库crypto的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SHA-256算法是一个广泛使用的散列函数,它产生256位的hash值。它用于许多安全应用程序和协议,包括 TLS 和 SSL、 SSH、 PGP 和比特币。

在 JavaScript 中计算 SHA-256 hash值使用原生 API 很容易,但是浏览器和 Node.js 之间有一些区别。由于浏览器实现是异步的,所以所提供的两个示例都使用异步promise返回。

浏览器实现

使用 Web Crypto API 中 SubtleCrypto 接口,SubtleCrypto.digest() 接口会返回给定数据的摘要,摘要以ArrayBuffer 的形式返回,需要将其转换为十六进制字符串。

const hashValue = val =>
crypto.subtle
  .digest('SHA-256', new TextEncoder('utf-8').encode(val))
  .then(h => {
    let hexes = [],
      view = new DataView(h);
    for (let i = 0; i < view.byteLength; i += 4)
      hexes.push(('00000000' + view.getUint32(i).toString(16)).slice(-8));
    return hexes.join('');
  });

hashValue(
JSON.stringify({ coder: "fe-garden", subject: 'sha-256', type: { module: "nodejs" } })
).then(console.log);
// '6c0225ba749b8701a5d051d02faafb1fdadc9457a2eaf8
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端后花园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值