常用加解密那些事之?dāng)?shù)字摘要

常用的數(shù)字摘要算法有MD5,SHA等,下面這對(duì)這些數(shù)字摘要算法來進(jìn)行介紹。
將數(shù)據(jù)(如一段文字)運(yùn)算變?yōu)榱硪还潭ㄩL度值,是散列算法的基礎(chǔ)原理。

MD5算法

消息摘要算法版本5(Message-Digest Algorithm 5)即MD5,由Ron Rivest(RSA公司)在1992年提出,目前被廣泛應(yīng)用于數(shù)據(jù)完整性校驗(yàn)、數(shù)據(jù)(消息)摘要、數(shù)據(jù)加密等。MD2、MD4MD5都產(chǎn)生16字節(jié)(128位)的校驗(yàn)值,一般用32位十六進(jìn)制數(shù)表示。MD2的算法較慢但相對(duì)安全,MD4速度很快,但安全性下降,MD5MD4更安全、速度更快。

介紹

MD5 報(bào)文摘要算法:MD5 報(bào)文摘要算法將任意長度的信息作為輸入值,并將其換算成一個(gè) 128 位長度的"指紋信息"或"報(bào)文摘要"值來代表這個(gè)輸入值,并以換算后的值作為結(jié)果。MD5 算法主要是為數(shù)字簽名應(yīng)用程序而設(shè)計(jì)的;在這個(gè)數(shù)字簽名應(yīng)用程序中,較大的文件將在加密(這里的加密過程是通過在一個(gè)密碼系統(tǒng)下[如:RSA]的公開密鑰下設(shè)置私有密鑰而完成的)之前以一種安全的方式進(jìn)行壓縮。[來自RFC1321]
MD5用途廣泛,對(duì)數(shù)據(jù)生成信息摘要放置被篡改,為大文件生成唯一的MD5信息摘要,保證文件未被修改。

實(shí)現(xiàn)原理:

MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。

MD5原理參考:
MD5算法原理
SHA1和MD5算法詳解和源碼

SHA算法

安全散列算法(SHA)能計(jì)算出一個(gè)數(shù)字消息所對(duì)應(yīng)到的,長度固定的字符串(又稱消息摘要)的算法。也是一種比較常用的數(shù)據(jù)摘要算法,目前SHA家族主要有五個(gè)算法,對(duì)于這幾種算法SHA家族中有介紹。

介紹

SHA(Secure Hash Algorithm)是由美國專門制定密碼算法的標(biāo)準(zhǔn)機(jī)構(gòu)——美國國家標(biāo)準(zhǔn)技術(shù)研究院(NIST)制定的,SHA系列算法的摘要長度分別為:SHA為20字節(jié)(160位)、SHA256為32字節(jié)(256位)、 SHA384為48字節(jié)(384位)、SHA512為64字節(jié)(512位),由于它產(chǎn)生的數(shù)據(jù)摘要的長度更長,因此更難以發(fā)生碰撞,因此也更為安全,它是未來數(shù)據(jù)摘要算法的發(fā)展方向。由于SHA系列算法的數(shù)據(jù)摘要長度較長,因此其運(yùn)算速度與MD5相比,也相對(duì)較慢。
目前SHA1的應(yīng)用較為廣泛,主要應(yīng)用于CA和數(shù)字證書中,另外在目前互聯(lián)網(wǎng)中流行的BT軟件中,也是使用SHA1來進(jìn)行文件校驗(yàn)的。

實(shí)現(xiàn)原理

給消息附加填充位使其模512與448同余(M%512 == 448)。即使?jié)M足了條件也要填充512位(比特)。填充過程是這樣的:先補(bǔ)一位1,后面一律補(bǔ)0,直至滿足條件。因此至少填充1位,最多填充512位。
因?yàn)槲覀兇鎯?chǔ)的時(shí)候是以字節(jié)為單位存儲(chǔ)的,所以我們的消息的長度(單位:位)一定是8的倍數(shù)。而我們填充的時(shí)候也一定是8位,8位的來填充。也即不可能只填充一個(gè)二進(jìn)制位,至少是8個(gè)二進(jìn)制位(一個(gè)字節(jié))。因此最少填充1個(gè)字節(jié),最多填充64個(gè)字節(jié)(64*8=512)。
在附加填充位完成之后,還要附加長度,即附加64位數(shù)據(jù)來存儲(chǔ)原始消息的長度。因?yàn)樵诟郊犹畛湮煌瓿芍?,消息長度(單位:位)是512與448同余,而此時(shí)再附加64位之后,消息長度就變成了512的整數(shù)倍。
最后我們開始計(jì)算消息摘要的時(shí)候,就是每512位為一組開始計(jì)算的。
其詳細(xì)的實(shí)現(xiàn)參見什么是安全散列算法SHA256?

參考:數(shù)據(jù)摘要算法總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章主要講述在Mobile BI(移動(dòng)商務(wù)智能)開發(fā)過程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲(chǔ)、登錄驗(yàn)證這幾個(gè)方面涉及的加密...
    雨_樹閱讀 3,039評(píng)論 0 6
  • 在開發(fā)應(yīng)用過程中,客戶端與服務(wù)端經(jīng)常需要進(jìn)行數(shù)據(jù)傳輸,涉及到重要隱私安全信息時(shí),開發(fā)者自然會(huì)想到對(duì)其進(jìn)行加密,即使...
    閑庭閱讀 3,432評(píng)論 0 11
  • 本文主要介紹移動(dòng)端的加解密算法的分類、其優(yōu)缺點(diǎn)特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法。文中會(huì)包含算法的...
    蘋果粉閱讀 11,676評(píng)論 5 29
  • 上學(xué)期選修了一門信息安全討論,期末的時(shí)候是寫一個(gè)關(guān)于信息安全方面的報(bào)告,找本科畢設(shè)精簡一下交上去,被老師發(fā)現(xiàn)了,開...
    cutoutsy閱讀 3,599評(píng)論 0 1
  • 本文通過對(duì)回天新材前世今生的案例回顧,闡述出在創(chuàng)業(yè)板市場(chǎng)上一個(gè)普遍的高管辭職“跑路”現(xiàn)象。 首先分析原因:創(chuàng)業(yè)板是...
    孫瑜苒苒閱讀 505評(píng)論 0 0

友情鏈接更多精彩內(nèi)容