美文网首页
Go语言使用单向散列函数和秘钥生成认证码对消息进行验证

Go语言使用单向散列函数和秘钥生成认证码对消息进行验证

作者: realguan | 来源:发表于2019-11-24 11:44 被阅读0次
    package main
    
    import (
        "crypto/hmac"
        "crypto/sha1"
        "fmt"
    )
    
    func main() {
        src := []byte("love you three thousand times")  // 明文
        key := []byte("just a joke")    // 秘钥
        // 生成散列值(消息认证码)
        hamc1 := GenerateHamc(src,key)
        // 验证消息认证码
        res := VerifyHamc(src,key,hamc1)
        fmt.Println(res)
    }
    
    // 生成消息认证码
    func GenerateHamc(plainText,key []byte) []byte {
        // 1 创建hash接口对象,需要指定使用的hash算法和秘钥
        myhash := hmac.New(sha1.New,key)
    
        // 2 给hash接口添加数据
        myhash.Write(plainText)
    
        // 3 计算出散列值
        hashText := myhash.Sum(nil)
    
        return hashText
    }
    
    // 验证消息认证码
    func VerifyHamc(plainText,key,hashText []byte) bool {
        // 1 创建hash接口对象,指定hash算法和秘钥
        myhash := hmac.New(sha1.New,key)
    
        // 2 给hash接口对象添加数据
        myhash.Write(plainText)
    
        // 3 计算散列值
        hamc2 := myhash.Sum(nil)
    
        // 4 两个散列值比较
        return hmac.Equal(hashText,hamc2)
    }
    

    相关文章

      网友评论

          本文标题:Go语言使用单向散列函数和秘钥生成认证码对消息进行验证

          本文链接:https://www.haomeiwen.com/subject/qgkhwctx.html