在Javascript中实现HMAC-SHA256,不引入库
时间: 2024-02-05 07:10:45 浏览: 131
HMAC-SHA256是一种使用SHA256哈希算法和密钥进行消息认证的方法。在JavaScript中实现HMAC-SHA256可以使用Web Crypto API。
以下是一个示例代码,其中包含计算HMAC-SHA256的函数:
```javascript
async function hmacSHA256(key, data) {
const encoder = new TextEncoder();
key = await crypto.subtle.importKey(
"raw",
encoder.encode(key),
{ name: "HMAC", hash: { name: "SHA-256" } },
false,
["sign"]
);
const signature = await crypto.subtle.sign(
"HMAC",
key,
encoder.encode(data)
);
return btoa(String.fromCharCode(...new Uint8Array(signature)));
}
```
该函数接受两个参数:密钥和要计算哈希值的数据。它使用TextEncoder将密钥和数据转换为字节数组,然后使用Web Crypto API的subtle对象将密钥导入为HMAC密钥。接下来,它使用subtle对象的sign方法计算哈希值,并将结果作为Base64编码的字符串返回。
以下是一个使用该函数的示例:
```javascript
const key = "mykey";
const data = "Hello, world!";
const hmac = await hmacSHA256(key, data);
console.log(hmac); // "kVdXBalnubcUfN3eOn4heo1BhkKQ6na4wZlZ4tJG9NI="
```
注意:Web Crypto API在某些旧浏览器上可能不可用。如果您需要支持旧浏览器,请考虑使用现有的JavaScript库实现HMAC-SHA256。
阅读全文