我必须用Javascript中的HMAC sha256散列文本
我试图在Javascript中使用HMAC SHA-256散列文本 我有[秘密] 我有Ruby代码要散列,但我需要Javascript代码来散列文本 Ruby代码我必须用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
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,看起来很奇怪,但如果是真的,这在很大程度上值得一个单独的问题!