
crypto/hmac(加密哈希算法)
发布日期:2021-05-06 03:46:13
浏览次数:20
分类:原创文章
本文共 1650 字,大约阅读时间需要 5 分钟。
package mainimport ( "crypto/hmac" "crypto/md5" "crypto/sha256" "fmt")//sha256加密算法func Sha256(message string, key string) (secretMessage []byte) { //创建对应的sha256哈希加密算法,这里的key为加密密钥 hash := hmac.New(sha256.New, []byte(key)) // 写入加密数据,这里的"abc123"为加密信息,即需要加密的对象 hash.Write([]byte(message)) secretMessage = hash.Sum(nil) return}func CheckSha256(message, secrectMessage, key []byte) bool { //message为需要加密的原始信息,secrectMessage为加密后的字符串,key为加密密钥 hash := hmac.New(sha256.New, key) // 创建hash加密算法 //对原始信息进行加密 hash.Write(message) // 写入数据 expectedMAC := hash.Sum(nil) //获取加密后的hash // 比较预期的hash和实际的hash return hmac.Equal(expectedMAC, secrectMessage)}//md5加密算法func Md5(message string, key string) (secretMessage []byte) { //创建对应的sha256哈希加密算法,这里的key为加密密钥 hash := hmac.New(md5.New, []byte(key)) // 写入加密数据,这里的"abc123"为加密信息,即需要加密的对象 hash.Write([]byte(message)) secretMessage = hash.Sum(nil) return}func CheckMd5(message, secrectMessage, key []byte) bool { //message为需要加密的原始信息,secrectMessage为加密后的字符串,key为加密密钥 hash := hmac.New(md5.New, key) // 创建hash加密算法 //对原始信息进行加密 hash.Write(message) // 写入数据 expectedMAC := hash.Sum(nil) //获取加密后的hash // 比较预期的hash和实际的hash return hmac.Equal(expectedMAC, secrectMessage)}func main() { //创建信息和密钥 key := "abc123" message := "15956651891" //sha256加密算法,加密 Hash256Message := Sha256(message, key) fmt.Printf("Hash256Message: %+v", Hash256Message) //校验是否是相同的密码 fmt.Println("是否相同:", CheckSha256([]byte(message), Hash256Message, []byte(key))) //Md5加密算法,加密 Md5Message := Md5(message, key) fmt.Printf("Md5Message: %+v", Md5Message) //校验是否是相同的密码 fmt.Println("是否相同:", CheckMd5([]byte(message), Md5Message, []byte(key)))}
发表评论
最新留言
不错!
[***.144.177.141]2025年03月13日 10时56分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
串的基本操作实现源码|数据结构
2019-03-04
数据查询(3.4)
2019-03-04
实验二 进程创建实验
2019-03-04
送你一颗心Easyx
2019-03-04
qtDesigner中添加QAction
2019-03-04
Java读入中文文件乱码现象的解决方案|java
2019-03-04
VS+OpenCV读取图片简单DEMO
2019-03-04
[0115ZIZI]扩展P5.js库相关链接
2019-03-04
B1008 数组元素循环右移问题 (20 分)
2019-03-04
B1022 D进制的A+B (20 分)
2019-03-04
B1021 个位数统计 (15 分)
2019-03-04
射频矩阵的应用
2019-03-04
不断发展的5G MIMO网络和虹科测试方案
2019-03-04
Photoshop基本操作(五)
2019-03-04
Y形电路与三角电路转换,网孔和节点分析法
2019-03-04
java中的字符串
2019-03-04
Java中的集合简要概括
2019-03-04
Java中的反射
2019-03-04
手写框架,模拟简易的SpringIOC
2019-03-04
Idiot 的间谍网络
2019-03-04