golang中crypto/hmac包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang中crypto/hmac包相关的知识,希望对你有一定的参考价值。
参考技术A hmac包实现了U.S.Federal Infomation Processing Standards Publication 198规定的HMAC(加密哈希信息认证码)。HMAC是使用key标记信息的加密hash。接收者使用相同的key逆运算来认证hash。
出于安全目的,接收者应使用Equal函数比较认证码:
这个包一共提供了两个对外公开的函数:
func Equal(mac1, mac2 []byte) bool
比较两个MAC是否相同,而不会泄露对比时间信息。(以规避时间侧信道攻击;指通过计算比较时花费的时间的长短来获取密码的信息,用于密码破解)
func New(h func() hash.Hash, key []byte) hash.Hash
New函数返回一个采用hash.Hash作为底层hash接口、key作为密钥的HMAC算法的hash接口。
Node.js 内置模块crypto加密模块 HMAC
HMAC:哈希消息认证码 ( Hash-based Message Authentication Code )
HMAC是密钥相关的哈希算法
使用 HMAC 进行加密的Node实现的一种方法:
"use strict"; const crypto = require("crypto");
//实例化一个hmac对象,使用md5进行加密,加密密钥是secret-key const hmac = crypto.createHmac("md5", "secret-key");
//使用hmac的update方法添加需要加密的内容 hmac.update("This is what needs to be encrypted");
//将加密内容转换成十六进制数,并在控制台打印 console.log(hmac.digest("hex"));
注:
1.使用hmac加密是需要密钥的;
2.密钥在crypto的createHmac方法的第二个参数传入;
3.密钥不同,经过加密得到的结果就不同
4.使用hmac对数据进行加密的 其它方法
以上是关于golang中crypto/hmac包的主要内容,如果未能解决你的问题,请参考以下文章
将crypto hmac转换为crypto-js hmac字符串