消息验证:使用HMAC通过密钥将消息生成消息认证码进行内部校验(无法进行第三方的证明)
package main
import (
"crypto/hmac"
"crypto/sha256"
"fmt"
)
//生成消息验证码
func CreateMAC1(src1,key []byte,)[]byte{
//建一个底层采用sha256算法 hash.hash解开
hasher:=hmac.New(sha256.New,key)
//添加测试数据
hasher.Write(src1)
//计算结果
mac:=hasher.Sum(nil)
return mac
}
//验证消息验证码
func CreateMAC2(src2,key,mac1 []byte)bool{
//根据接收到数据,使用相同的算法,得到本地消息认证码
manloal:=CreateMAC1(src2,key)
//对比两个mac之间的是否相同
res:=hmac.Equal(manloal,mac1)
return res
}
func main(){
src1:=[]byte("123456789")
src2:=[]byte("123456 789")
key:=[]byte("hello wolrd!")
mac1:=CreateMAC1(src1,key)
fmt.Printf("mac1 : %x\n",mac1)
mac2:=CreateMAC2(src2,key,mac1)
fmt.Printf("mac2 :%v\n",mac2)
}