簽名算法-MD5

一、什么是MD5

MD5 (Message Digest Algorithm 5,消息摘要算法第五版)為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù)

MD5的功能,簡(jiǎn)單而言,是將一段明文作為輸入,輸出一串固定長(zhǎng)度的字符串,即此段明文的簽名(或摘要),并保證輸入不同的明文,其輸出的簽名截然不同(有極低概率失效)。

二、MD5算法

MD5 算法流程

MD5的算法可以簡(jiǎn)述如下:

  1. 若明文長(zhǎng)度不是512位的整數(shù)倍,則填充字符至滿足此條件,然后將明文按512位的長(zhǎng)度分塊
  2. 設(shè)置128位的初始秘鑰,一般使用算法庫(kù)默認(rèn)值,按照順序?qū)σ粔K數(shù)據(jù)進(jìn)行非線性運(yùn)算,生成一個(gè)128位的結(jié)果,作為下一次計(jì)算的輸入部分,依次迭代,直到最后輸出一個(gè)128位的簽名

三、代碼實(shí)現(xiàn)

現(xiàn)有主流語(yǔ)言都有對(duì)應(yīng)的MD5實(shí)現(xiàn),在Python中Demo如下:

import hashlib

# 待加密信息
text = 'hello world'

# 創(chuàng)建md5對(duì)象
md5 = hashlib.md5()
#更新hash對(duì)象的值
md5.update(text.encode("utf-8"))

print('MD5 sign=:' + md5.hexdigest())

四、實(shí)際應(yīng)用

情景1:服務(wù)器端密碼存儲(chǔ)

很久前安全意識(shí)還很淡薄,不少服務(wù)器密碼是明文保存于數(shù)據(jù)庫(kù)中的。一旦攻擊者成功入侵到數(shù)據(jù)庫(kù),就直接取得賬號(hào)和密碼
隨著時(shí)間發(fā)展,開(kāi)發(fā)者認(rèn)識(shí)到密碼明文保存的脆弱性,采用加密保存密碼。此階段不存儲(chǔ)用戶的原始密碼,而是存儲(chǔ)其密碼的簽名。用戶登錄時(shí)只需要計(jì)算其輸入密碼的簽名與服務(wù)器端保存的簽名是否一致即可。這樣,即使泄露了簽名值,攻擊者也無(wú)法直接得到原始的密碼

情景2:消息防篡改

上面MD5的算法中初始由算法默認(rèn)設(shè)置。如果直接使用的話,是不安全的。比如我發(fā)送一段消息,并將其MD5簽名發(fā)送出去。但是被第三方攔截了,他修改了消息,重新進(jìn)行MD5簽名。那么接收方無(wú)法判斷其是否消息是否被修改了
一般而言,是發(fā)送方和接收方一同約定一個(gè)密鑰,在發(fā)送消息是將密鑰加在消息中進(jìn)行簽名。第三方?jīng)]有密鑰,重新生成的簽名是不同的
此外,有的時(shí)候會(huì)在消息后面加上一無(wú)意義的隨機(jī)字符串,是得生成的MD5更加隨機(jī),不易被破解

參考鏈接

MD5算法原理介紹與C++實(shí)現(xiàn)
信息摘要算法之一:MD5算法解析及實(shí)現(xiàn)
Python 中 MD5 加密
談?wù)劽艽a安全:服務(wù)端密碼保存

?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 這篇文章主要講述在Mobile BI(移動(dòng)商務(wù)智能)開(kāi)發(fā)過(guò)程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲(chǔ)、登錄驗(yàn)證這幾個(gè)方面涉及的加密...
    雨_樹(shù)閱讀 3,043評(píng)論 0 6
  • 在很多時(shí)候在跟第三方做數(shù)據(jù)交互的時(shí)候,對(duì)方都會(huì)提供給我們簽名密鑰signKey,并且要求我們傳入簽名 這種做法非常...
    smallThree1閱讀 2,758評(píng)論 0 0
  • 前言 《圖解密碼技術(shù)》一書(shū)介紹了很多關(guān)于密碼的知識(shí),通讀一遍需要不少時(shí)間。為了方便學(xué)習(xí),我對(duì)書(shū)中關(guān)鍵的部分進(jìn)行了總...
    咖枯閱讀 7,574評(píng)論 1 25
  • 為了防止我們的數(shù)據(jù)泄露,我們往往會(huì)對(duì)數(shù)據(jù)進(jìn)行加密,特別是敏感數(shù)據(jù),我們要求的安全性更高。下面將介紹幾種常用的加密算...
    Chauncey_Chen閱讀 3,022評(píng)論 0 20
  • 寂寞日子里開(kāi)懷大笑 我的孤獨(dú)變得喧鬧 聽(tīng)不清夜的低吟 只當(dāng)做一陣聒噪 彷徨的人仍在彷徨 街角霓虹燈又亮到太晚 盼一...
    一個(gè)經(jīng)常啜泣的胃閱讀 360評(píng)論 1 10

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