前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言中实现HmacSHA256加密算法

Go语言中实现HmacSHA256加密算法

作者头像
Jon Lee
发布2024-06-22 13:04:58
880
发布2024-06-22 13:04:58
举报
文章被收录于专栏:技术圈-Go语言技术圈-Go语言

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

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

代码语言:go
复制
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
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档