日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

密码技术--消息认证码及go语言应用

發(fā)布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密码技术--消息认证码及go语言应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.什么是消息認(rèn)證碼

消息認(rèn)證碼(message authorization code)是一種確認(rèn)完整性并進(jìn)行認(rèn)證的技術(shù),取了三個單詞的首字母,簡稱為MAC

發(fā)送者:((原始數(shù)據(jù)) + 秘鑰) * 哈希函數(shù) = 散列值(消息認(rèn)證碼)

  • 發(fā)送原始數(shù)據(jù)和消息認(rèn)證碼

接收者:

  • 接收消息認(rèn)證碼和原始數(shù)據(jù)

(接收原始數(shù)據(jù) + 秘鑰) * 哈希函數(shù) = 新的散列值 =? 接收到的散列值(消息認(rèn)證碼)

秘鑰必須一樣,使用的哈希函數(shù)必須一致

2.go中使用消息認(rèn)證碼

package mainimport ("crypto/hmac""crypto/sha256" )func GenerateHamc(plainText, key []byte) []byte {//1.初始化一個哈希接口,指定使用的哈希算法和秘鑰hMAC := hmac.New(sha256.New, key)//2.添加數(shù)據(jù)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.添加原始數(shù)據(jù)hMAC.Write(plainText)//3.計算散列值hMacNew := hMAC.Sum(nil)//4.比較消息認(rèn)證碼res := hmac.Equal(hMacNew, hMACOld)return res }func main() {src := []byte("消息認(rèn)證碼(message authorization code)是一種確認(rèn)完整性并進(jìn)行認(rèn)證的技術(shù),取了三個單詞的首字母,簡稱為MAC")key := []byte("12345678")hMacOld := GenerateHamc(src, key)res := VerityHmac(src, key, hMacOld)fmt.Printf("消息認(rèn)證結(jié)果:%t\n", res) }

3.消息認(rèn)證碼存在的問題

弊端:

  • 共享秘鑰分發(fā)困難問題(可以用非對稱解決)

無法解決的問題

  • 無法通過第三方證明
  • 不能防止否認(rèn)

總結(jié)

以上是生活随笔為你收集整理的密码技术--消息认证码及go语言应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。