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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

密码学基础知识(六)Hash函数与消息认证

發(fā)布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密码学基础知识(六)Hash函数与消息认证 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Hash函數(shù)和消息認(rèn)證

先說Hash

哈希函數(shù),可以將任意長度的消息壓縮為某一固定長度的消息摘要函數(shù)。一句話,Hash簡直了。

當(dāng)然有逆天的一面就有大缺點,過程不可逆。傻了吧,哈哈。

Hash的性質(zhì):

1.????(逆天特性)應(yīng)用于任意長的消息,產(chǎn)生固定長的輸出(散列值,消息摘要,數(shù)字指紋隨便你叫什么了);

2.????(單向性)對于給定消息x,H(x)很容易得出。但是對于給定z,尋找H(x)=z是不可行的;

3.????(安全特性)抗弱碰撞性:有x,找一個y,使得H(x)=H(y)計算不可行;抗強(qiáng)碰撞性:尋找(x,y),使得使得H(x)=H(y)計算不可行。

4.????(雪崩性)雪崩效應(yīng),散列值的每一位都與消息的每一位有關(guān),相近的消息,輸出很大差別。

Hash:

?????? 帶密鑰的Hash和不帶密鑰的Hash。區(qū)別在于前者一個輸入,后者兩個:消息+密鑰。后者一般用于產(chǎn)生消息認(rèn)證碼MAC。

Hash應(yīng)用:

1.數(shù)據(jù)完整性驗證:由于雪崩性,稍有改動一對比就發(fā)現(xiàn)了;2.產(chǎn)生數(shù)字簽名:計算H(m),然后私鑰加密;3.密鑰推導(dǎo):天生單向性;4.偽隨機(jī)數(shù)生成。

簡單說下Hash函數(shù)的攻擊方法:

?????? 第一類生日攻擊:

????????????? 就是說,n個輸入,其中有一個輸出H(x),那我要多少個y才能使H(y)=H(x)的概率達(dá)到0.5?

????????????? 答案是2/n個。假如輸出為m位長,那么就有2m個輸出。引出了第二類生日攻擊

?????? 第二類生日攻擊:

????????????? k~=2m/2,說明了散列值不能小于128位啊。

?????? 模差分攻擊:

????????????? 最有效的方法,也叫比特追蹤法。這個假期研究研究。

?

再額外提下基于分組密碼的Hash函數(shù):

?????? 可以用CBC和CFB。

由于這種基于加密體制的Hash函數(shù)經(jīng)不起攻擊,所以大多都用另一類,即構(gòu)造復(fù)雜的非線性關(guān)系實現(xiàn)單向性。這就產(chǎn)生了那些著名的算法和那些著名的事。

?

MD5算法:

?????? 輸入消息:長度小于264,以512位一組。

?????? 輸出消息:128位

過程:

1.消息填充:將消息長度填充至差64位就是512的倍數(shù)。那64位是表示填充長度的,是先從低位表示填充長度的。

?????? 2.填充后的消息是512的倍數(shù),然后按512分組,每組又是16個32位長的字。

?????? 3.初始化中間結(jié)果:128位的緩存區(qū)來存儲中間結(jié)果,對其初始化4個32位長的寄存器分別存放四個固定的整數(shù)。

?????? 4.迭代壓縮:每個分組經(jīng)壓縮函數(shù)HMD5處理。

???????????????????? 那就說說這個壓縮函數(shù),HMD5有四輪處理,四個輪函數(shù)結(jié)構(gòu)相同但是邏輯函數(shù)不同。

5.????輸出:最后一個HMD5的輸出即為消息摘要。

?

HMD5

?????? 四輪處理過程,每輪都對緩沖區(qū)16輪迭代運算。

?

SHA:

?????? 與MD5一脈相承,來自MD4,真名SHA-1。

?????? 輸入消息:長度小于264,以512位一組。

?????? 輸出消息:160位

過程:

1.消息填充:(跟MD5一樣)將消息長度填充至差64位就是512的倍數(shù)。那64位是表示填充長度的,是先從位表示填充長度的。

?????? 2.填充后的消息是512的倍數(shù),然后按512分組,每組又是16個32位長的字。

?????? 3.初始化中間結(jié)果:160位的緩存區(qū)來存儲中間結(jié)果,對其初始化5個32位長的寄存器分別存放五個固定的整數(shù)。

?????? 4.迭代壓縮:四輪處理,每輪20迭代,也是邏輯函數(shù)不同

5.? 輸出:最后一個分組的輸出即為160位的消息摘要。

?

在壓縮函數(shù)上看兩者區(qū)別:

?????? MD5直接用分組的16個字作為迭代,SHA則將16字?jǐn)U展為80字。

?

MD5和SHA算法必然相似,哥倆嘛,

?

?

消息認(rèn)證碼MAC:

?????? 驗證信息來源的真實性;驗證消息的完整性。

?

很顯然,Hash函數(shù)很適合設(shè)計MAC。所以有了HMAC:

?????? 累了,休息一會。



總結(jié)

以上是生活随笔為你收集整理的密码学基础知识(六)Hash函数与消息认证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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