首先来说说SHA1加密
SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所NIST发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。
--摘自维基百科
HMACSHA1是从 SHA1 哈希函数构造的一种键控哈希算法, 此 HMAC 进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数。 输出的哈希值长度与SHA-1一致
总的来说,两者具体区别好像就是HMACSHA1加密需要密钥,而SHA1不需要。如果有大佬知道其它的区别,麻烦一定要留言告知。
这次主要是用Golang实现了HMACSHA1加密方法,通过公共密钥生成散列值并与调用方传来的散列值进行对比,以此确保数据的安全性。实现代码(简化版)如下
/*
// keyStr 密钥
// value 消息内容
*/
func HMACSHA1(keyStr, value string) string{
key := []byte(keyStr)
mac := hmac.New(sha1.New, key)
mac.Write([]byte(value))
//进行base64编码
res := base64.StdEncoding.EncodeToString(mac.Sum(nil))
return res
}