当前位置: 代码网 > it编程>编程语言>Javascript > 如何使用JavaScript计算SHA-256 hash值详解

如何使用JavaScript计算SHA-256 hash值详解

2024年11月26日 Javascript 我要评论
前言sha-256算法是一个广泛使用的散列函数,它产生256位的hash值。它用于许多安全应用程序和协议,包括 tls 和 ssl、 ssh、 pgp 和比特币。在 javascript 中计算 sh

前言

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);
// '6c0225ba749b8701a5d051d02faafb1fdadc9457a2eaf81bf89e3353a6aaa4f1'

nodejs实现

使用node 内置的加密库crypto实现。

import { createhash } from "crypto";

const hashvalue = (val) =>
new promise((resolve) => {
  const hash = createhash("sha256").update(val).digest("hex");
  resolve(hash);
});

hashvalue(json.stringify({ coder: "fe-garden", subject: 'sha-256', type: { module: "nodejs" } })).then(
console.log
);
//6c0225ba749b8701a5d051d02faafb1fdadc9457a2eaf81bf89e3353a6aaa4f1

注意

  • 上述两个实现互不兼容,不能在 node.js 中使用浏览器实现,反之亦然;

  • 两种实现应该为相同的输入产生相同的结果。

总结

以上就是利用js 实现sha256方法,包括浏览器版本的javascript 使用sha256算法,和nodejs 中js计算sha256hex 方法,希望对你有所帮助。

参考资料

到此这篇关于如何使用javascript计算sha-256 hash值的文章就介绍到这了,更多相关js计算sha-256 hash值内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com