首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在deno中使用HmacSHA256创建哈希?

如何在deno中使用HmacSHA256创建哈希?
EN

Stack Overflow用户
提问于 2021-01-20 07:49:52
回答 1查看 1.2K关注 0票数 3

我知道如何在Python中做到这一点。

代码语言:javascript
运行
复制
#!/usr/bin/python
import sys
import os
import hashlib
import hmac
import base64

secretKey = bytes("passw@rd", 'UTF-8')
message = bytes(f'hello world\nhello deno', 'UTF-8')
encryptedKey = base64.b64encode(hmac.new(secretKey, message, digestmod=hashlib.sha256).digest())
print(encryptedKey)

但我不知道在德诺怎么做。我希望上面的python代码在deno中得到相同的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-20 10:02:51

您可以使用内置的crypto.subtle工具(从2021年中期开始使用)创建HMAC- the 256散列,如下所示:

代码语言:javascript
运行
复制
import { encode } from "https://deno.land/std/encoding/base64.ts"

const message = "hello world\nhello deno"

const encoder = new TextEncoder()
const keyBuf = encoder.encode("passw@rd");

const key = await crypto.subtle.importKey(
  "raw",
  keyBuf,
  {name: "HMAC", hash: "SHA-256"},
  true,
  ["sign", "verify"],
)

const data = encoder.encode(message);
const result = await crypto.subtle.sign("HMAC", key , data.buffer);
console.log(encode(new Uint8Array(result)));

kqfsOD/HMHBRL9F1Si4Y/qo9PCw2csuwXIGZK/P1IWc=

在Deno引入crypto.subtle之前,有两种基于外部包的选择:

您可以为此使用神密码,但这需要额外的Base64模块。重要的注意事项:上帝密码的拥有者停止了对软件包的维护,因此建议不再使用它。

代码语言:javascript
运行
复制
import { hmac } from "https://deno.land/x/god_crypto@v1.4.10/mod.ts"
import * as base64 from "https://deno.land/x/base64@v0.2.1/mod.ts"

let secretKey = "passw@rd"
let message = "hello world\nhello deno"

const result: string = base64.fromUint8Array(hmac("sha256", secretKey, message))

console.log(result)

kqfsOD/HMHBRL9F1Si4Y/qo9PCw2csuwXIGZK/P1IWc=

或者您可以使用更方便的hmac模块,该模块集成了"base64“、"utf8”和“十六进制”的输出编码:

代码语言:javascript
运行
复制
import { hmac } from "https://deno.land/x/hmac@v2.0.1/mod.ts";

let secretKey = "passw@rd"
let message = "hello world\nhello deno"

const result = hmac("sha256", secretKey , message , "utf8", "base64");
console.log(result)

kqfsOD/HMHBRL9F1Si4Y/qo9PCw2csuwXIGZK/P1IWc=

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65805172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档