非对称加密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)
}
上一篇下一篇

猜你喜欢

热点阅读