首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言中实现HmacSHA256加密算法

Go语言中实现HmacSHA256加密算法

作者头像
技术圈
发布于 2024-06-22 05:04:58
发布于 2024-06-22 05:04:58
5600
举报
文章被收录于专栏:技术圈技术圈

HmacSHA256加密算法比较常用的加密算法之一,它比MD5更加安全。HmacSHA256也是微信支付推荐的加密方式。

在Go语言中实现HmacSHA256还是比较简单的,虽然没有PHPhash_hmac一个函数搞定的方式简单,但比起Java中的实现还是简单不少。

代码语言:go
AI代码解释
复制
package main

import (
	"crypto/hmac"
	"crypto/sha256"
	"encoding/base64"
	"encoding/hex"
	"fmt"
)

// HmacSha256 计算HmacSha256
// key 是加密所使用的key
// data 是加密的内容
func HmacSha256(key string, data string) []byte {
	mac := hmac.New(sha256.New, []byte(key))
	_, _ = mac.Write([]byte(data))

	return mac.Sum(nil)
}

// HmacSha256ToHex 将加密后的二进制转16进制字符串
func HmacSha256ToHex(key string, data string) string {
	return hex.EncodeToString(HmacSha256(key, data))
}

// HmacSha256ToHex 将加密后的二进制转Base64字符串
func HmacSha256ToBase64(key string, data string) string {
	return base64.URLEncoding.EncodeToString(HmacSha256(key, data))
}

func main() {
    // secret 是加密要使用的key
    // apple 是要加密的内容
	fmt.Printf("HmacSha256转16字符串: %s\n", HmacSha256ToHex("secret", "apple"))
	fmt.Printf("HmacSha256转base字符串: %s\n", HmacSha256ToBase64("secret", "apple"))
}

运行结果:

代码语言:sh
AI代码解释
复制
HmacSha256转16字符串: 37431003b2d14b6bddb9334c7ec2ff0ea0c65f96ec650952384e56cae83c398f
HmacSha256转base字符串: N0MQA7LRS2vduTNMfsL_DqDGX5bsZQlSOE5Wyug8OY8=

可以看出,HmacSha256加密后是二进制数据,其中包含不可见字符串,不便于传输,通常将其转换为16进制Base64字符串。

最后,推荐一个 golang 的加解密库:https://github.com/forgoer/openssl,它支持AESDESRSAsha1Hmac-Sha1sha256Hmac-Sha256等常用算法。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
加密与安全_深入了解Hmac算法(消息认证码)
这个salt可以看作是一个额外的“认证码”,同样的输入,不同的认证码,会产生不同的输出。因此,要验证输出的哈希,必须同时提供“认证码”。
小小工匠
2024/05/26
1.5K0
string字符串扩展
/// <summary> /// /// </summary> public static class StringExtentions { /// <summary> /// 转换为MD5加密后的字符串(默认加密为32位) /// </summary> /// <param name="str"></param> /// <returns></returns> public
跟着阿笨一起玩NET
2022/12/09
9630
[UE 虚幻引擎] DTHmacSha 蓝图HMACSHA加密算法插件说明
HMACSHA一共有5种加密方式,分辨是 HMAC SHA-1, HMAC SHA-224,HMAC SHA-256,HMAC SHA-384,HMAC SHA-512。
阿六_Dexter
2024/07/23
1350
第三方 API 接口安全加密方法和认证
与第三方系统做系统对接,接口认证是必不可少的,安全的认证方式可以极大的增强系统的安全性访问。
小柒2012
2023/04/04
9310
第三方 API 接口安全加密方法和认证
Java使用AES加密解密
AES加密机制: 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中
二十三年蝉
2018/08/01
5.3K0
浅谈json web token及应用
Json Web Token (JWT),是一个非常轻巧的规范,这个规范允许在网络应用环境间客户端和服务器间较安全的传递信息。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。
我的小碗汤
2018/08/22
4890
浅谈json web token及应用
Golang:加密解密算法
在项目开发过程中,当操作一些用户的隐私信息,诸如密码,帐户密钥等数据时,往往需要加密后可以在网上传输.这时,需要一些高效地,简单易用的加密算法加密数据,然后把加密后的数据存入数据库或进行其他操作;当需要读取数据时,把加密后的数据取出来,再通过算法解密.
OwenZhang
2021/12/08
1.8K0
Golang:加密解密算法
HMAC 签名编码的坑:Go 和 PHP 的不同处理方式
在开发过程中,我们经常使用 HMAC(散列消息认证码)对数据进行签名,以确保数据完整性和身份验证。
沈唁
2025/03/12
1840
.NET Core 使用HMAC算法
通过哈希算法,我们可以验证一段数据是否有效,方法就是对比该数据的哈希值,例如,判断用户口令是否正确,我们用保存在数据库中的password_md5对比计算md5(password)的结果,如果一致,用户输入的口令就是正确的。
晓晨
2019/11/13
1K0
Python 和 PHP 对腾讯云签名 hmac_sha256 算法实现
开宗明义,米扑科技在使用腾讯云的API接口签名中,按照官方示例开发PHP、Python的接口,经常会提示签名错误
阳光岛主
2019/02/18
2.6K0
Java集成谷歌身份验证器
Google身份验证器 Google Authenticator 是谷歌推出的基于时间的一次性密码(Time-based One-time Password,简称TOTP),只需要在手机上安装该APP,就可以生成一个随着时间变化的一次性密码,用于帐户验证。
Blue_007
2023/10/21
4.1K14
Java集成谷歌身份验证器
java加密方式
在Java中,加密方式分为对称加密、非对称加密和哈希算法。下面介绍几种常见的加密方式及其实现:
小焱
2025/07/08
1670
Auto.js中实现HMAC-SHA256加密算法,支持腾讯云v3签名
最近在Auto.js中做腾讯云的文字识别OCR,其中有个难点是腾讯云的v3签名(有时也称作 TC3-HMAC-SHA256),其中需要用到几个加密算法,在其他服务端语言中都有现成的函数可以使用,但是在JavaScript和Auto.js中都找不到对应的函数,幸好Auto.js支持Java,参考Java代码稍微转换一下就可以用了。
主机优惠教程
2022/04/09
1.7K0
如何开发ChatOps
现在各种Ops,比如DevOps,AIOps,ChatOps,NoOps等等,反正其背后的意义就是各种卷运维,让运维无路可走。
没有故事的陈师傅
2022/12/06
5930
如何开发ChatOps
Go加密算法总结
它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。本文也对Base64编码方式做了简要介绍。
iginkgo18
2020/12/22
1.7K0
Kong网关hmac-auth认证插件配置指引,附几种语言的客户端实现
hmacUsername 和 hmacSecret 需要传入Kong网关Consumer中配置的值
windealli
2023/10/13
9260
Kong网关hmac-auth认证插件配置指引,附几种语言的客户端实现
常见的加密算法
前端使用开源CryptoJS (crypto.js) 为 JavaScript加密算法,Github地址(https://github.com/brix/crypto-js)。目前已支持的算法包括:
分母为零
2019/07/04
1.9K0
主流加密方式
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),对称加密
酷走天涯
2019/05/26
1.4K0
「Go工具箱」web中想做到cookie值安全?securecookie库的使用和实现原理
大家好,我是渔夫子。「Go学堂」新推出“Go工具箱”系列,意在给大家分享使用go语言编写的、实用的、好玩的工具。
Go学堂
2022/11/09
5920
使用 NodeJS 实现 JWT 原理
我们用nodejs为前端或者其他服务提供resful接口时,http协议他是一个无状态的协议,有时候我们需要根据这个请求的上下获取具体的用户是否有权限,针对用户的上下文进行操作。所以出现了cookies session还有jwt这几种技术的出现, 都是对HTTP协议的一个补充。使得我们可以用HTTP协议+状态管理构建一个的面向用户的WEB应用。
前端老王
2020/09/23
1.3K0
使用 NodeJS 实现 JWT 原理
相关推荐
加密与安全_深入了解Hmac算法(消息认证码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档