我必须用Javascript中的HMAC sha256散列文本

我必须用Javascript中的HMAC sha256散列文本,javascript,Javascript,我试图在Javascript中使用HMAC SHA-256散列文本 我有[秘密] 我有Ruby代码要散列,但我需要Javascript代码来散列文本 Ruby代码 OpenSSL::HMAC.hexdigest( 'sha256', # hash function 'HFgGgIOaLiyFgUhIjirOoqxloHuiLNr20jkhXrNw', # secret key (keep safe!) current_user.email # user's email address

我试图在Javascript中使用HMAC SHA-256散列文本 我有[秘密]

我有Ruby代码要散列,但我需要Javascript代码来散列文本

Ruby代码

OpenSSL::HMAC.hexdigest(
  'sha256', # hash function
  'HFgGgIOaLiyFgUhIjirOoqxloHuiLNr20jkhXrNw', # secret key (keep safe!)
  current_user.email # user's email address
)

请向我推荐任何解决方案。

我认为CryptoJS可以使用

CryptoJS.HmacSHA256(当前_user.email,'HFgGgIOaLiyFgUhIjirOoqxloHuiLNr20jkhXrNw')
.toString(CryptoJS.enc.Hex)
和本机api,取自:

异步函数HMAC(键、消息){ const g=str=>新的Uint8Array([…unescape(encodeURIComponent(str))].map(c=>c.charCodeAt(0)), k=g(键), m=g(信息), c=await crypto.minute.importKey('raw',k,{name:'HMAC',hash:'SHA-256'},true,['sign']),和, s=等待加密微妙符号('HMAC',c,m); […新Uint8Array(s)].map(b=>b.toString(16).padStart(2,'0')).join(“”); 返回btoa(String.fromCharCode(…新Uint8Array))) } /*试验*/ HMAC(“我的密码”,“你好,世界!”)
。然后(e=>console.log(e))浏览器或服务器端可能存在重复?这非常有用!没有外部依赖,只是一个很小的函数来处理它-非常感谢!谢谢,非常有帮助。我将函数g()更改为使用TextEncoder。const encoder=new textcoder()const messageBytes=encoder.encode(message)为什么js输出与nodejs输出不同?Idk,看起来很奇怪,但如果是真的,这在很大程度上值得一个单独的问题!