密码技术--消息认证码及go语言应用
生活随笔
收集整理的這篇文章主要介紹了
密码技术--消息认证码及go语言应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.什么是消息認證碼
消息認證碼(message authorization code)是一種確認完整性并進行認證的技術,取了三個單詞的首字母,簡稱為MAC
發送者:((原始數據) + 秘鑰) * 哈希函數 = 散列值(消息認證碼)
- 發送原始數據和消息認證碼
接收者:
- 接收消息認證碼和原始數據
(接收原始數據 + 秘鑰) * 哈希函數 = 新的散列值 =? 接收到的散列值(消息認證碼)
秘鑰必須一樣,使用的哈希函數必須一致
2.go中使用消息認證碼
package mainimport ("crypto/hmac""crypto/sha256" )func GenerateHamc(plainText, key []byte) []byte {//1.初始化一個哈希接口,指定使用的哈希算法和秘鑰hMAC := hmac.New(sha256.New, key)//2.添加數據hMAC.Write(plainText)//3.計算sum := hMAC.Sum(nil)return sum }func VerityHmac(plainText, key, hMACOld []byte) bool {//1.初始化一個哈希接口,指定使用的哈希算法和秘鑰hMAC := hmac.New(sha256.New, key)//2.添加原始數據hMAC.Write(plainText)//3.計算散列值hMacNew := hMAC.Sum(nil)//4.比較消息認證碼res := hmac.Equal(hMacNew, hMACOld)return res }func main() {src := []byte("消息認證碼(message authorization code)是一種確認完整性并進行認證的技術,取了三個單詞的首字母,簡稱為MAC")key := []byte("12345678")hMacOld := GenerateHamc(src, key)res := VerityHmac(src, key, hMacOld)fmt.Printf("消息認證結果:%t\n", res) }3.消息認證碼存在的問題
弊端:
- 共享秘鑰分發困難問題(可以用非對稱解決)
無法解決的問題
- 無法通過第三方證明
- 不能防止否認
總結
以上是生活随笔為你收集整理的密码技术--消息认证码及go语言应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码技术--非对称加密算法及Go语言应用
- 下一篇: 密码技术--RSA数字签名及Go语言应用