首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复谷歌闭包库上的sha256 hmac加密?

如何修复谷歌闭包库上的sha256 hmac加密?
EN

Stack Overflow用户
提问于 2019-01-23 05:39:17
回答 1查看 181关注 0票数 4

多个Hmac加密器输出google闭合库的不同结果。

我已经尝试了多个Hmac加密器,它们输出相同的结果。然而,当使用谷歌闭包时,无论是在NodeJS中还是在ClojureScript中,它输出的结果都完全不同。

代码语言:javascript
复制
require("google-closure-library");

function bytesToHex(b) {
    var hexchars = '0123456789abcdef';
    var hexrep = new Array(b.length * 2);
    for (var i = 0; i < b.length; ++i) {
      hexrep[i * 2] = hexchars.charAt((b[i] >> 4) & 15);
      hexrep[i * 2 + 1] = hexchars.charAt(b[i] & 15);
    }
    return hexrep.join('');
}

goog.require('goog.crypt.Hmac');
goog.require('goog.crypt.Sha256');

function getHmac(key, message) {
    var hasher = new goog.crypt.Sha256();
    var hmacer = new goog.crypt.Hmac(hasher, key, 64);
    return bytesToHex(hmacer.getHmac(message));
}

console.log(getHmac('ac13', 'msg'));

已证明密钥'msg‘和消息’msg‘的sha256 Hmac在多个加密库上是a4a21ba4ddef094c847d4a75ef9a026d329ee12563f3ab00e63261abae55c18d的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 13:44:56

它工作得很好。Hmac需要一个array of numbers,而不是一个字符串。

代码语言:javascript
复制
(defn hmac [key message]
    (let [decode goog.crypt/stringToByteArray
          hasher (goog.crypt.Sha256.)
          hmacer (goog.crypt.Hmac. hasher (decode key))]
        (.getHmac hmacer (decode message))))

(prn (goog.crypt/byteArrayToHex (hmac "ac13" "msg")))
=> "a4a21ba4ddef094c847d4a75ef9a026d329ee12563f3ab00e63261abae55c18d"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54316829

复制
相关文章

相似问题

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