非对称加密MAC
2019-01-18 本文已影响0人
够浪你大哥
package main
import (
"crypto/hmac"
"crypto/sha256"
"fmt"
)
//消息认证码简称MAC
//是一种与秘钥相关联的单向散列函数
//创建消息认证码
func CreatMAC(src,key []byte)[]byte {
//创建一个消息认证器
hash := hmac.New(sha256.New, key)
//把数据写入消息认证器
hash.Write(src)
//调用sum方法获得加密数据
sum := hash.Sum(nil)
return sum
}
//进行消息对比
func VerifyMAC(src1, key, mac []byte) bool {
//根据收到的数据,使用相同的算法,得到本地消息认证码
bytes := CreatMAC(src1, key)
//调用对比函数,进行数据对比,比较连个MAC是否相同,确保不会泄露数据信息
equal := hmac.Equal(bytes, src1)//返回值为true或者false
return equal
}
func main() {
src := []byte("干就完了,没毛病")
src1 := []byte("干就完了,没毛病!")
//创建哈希秘钥
key := []byte("sheibufu")
//生成消息认证码
mac := CreatMAC(src, key)
fmt.Printf("Mac1 :%x\n",mac)
//进行对比
verifyMAC := VerifyMAC(src1, key, mac)
fmt.Printf("Verify:%v\n",verifyMAC)
}