javascript - 如何使用 SubtleCrypto 在 chrome 扩展中对文本进行 SHA-256 哈希处理
问题描述
我正在使用 Subtle Crypto 散列一个文本字段并获得一个 [object ArrayBuffer]。
相关代码在这里:
async function asyncCall() {
var enc = new TextEncoder(); // always utf-8
var enc2 = new TextDecoder(); // always utf-8
var digest3 = enc.encode(localStorage.getItem("Item 1"));
const digest2 = await crypto.subtle.digest("SHA-256", (digest3));
localStorage.setItem("Item Hashed", (digest2));
field2.value = localStorage.getItem("Item Hashed");
};
当我用这个散列任何文本(“项目 1”是使用文本字段定义的 localStorage 文本)时,我得到 [object ArrayBuffer] 作为结果。为什么我没有得到看起来像 SHA256 哈希的东西?
解决方案
将 ArrayBuffer 转换为十六进制字符串:
const hashArray = Array.from(new Uint8Array(digest2)); // convert buffer to byte array
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string
推荐阅读
- java - 使用java高级rest客户端将Id列表作为Multi-Get请求的参数传递
- amazon-web-services - AWS - 在每个区域循环
- python - 获取与 csv 名称列表匹配的 twitter @user
- javascript - 当需要在所有卡片上显示时,仅在一张卡片上显示传单地图
- java - 如何生成具有一定数量整数的文本文件?
- postgresql - 将用户CSV文件上传的内容放入数据库的最佳方法是什么
- cypher - 路径中具有多个关系的 Cypher BFS
- read-the-docs - 有没有办法在 ReadTheDoc 中添加私钥?
- node.js - node-schedule 应该在 node js 中每 1 小时运行一次
- java - 模拟服务器 java.net.ConnectException