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语言使用单向散列函数和秘钥生成认证码对消息进行验证
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- keytool -exportcert -alias yoursAlisa -keystore Yours.jks...