Python 中 MD5 哈希函數(shù)的實現(xiàn)

前言

本文的文字及圖片來源于網(wǎng)絡,僅供學習赖钞、交流使用,不具有任何商業(yè)用途,如有問題請及時聯(lián)系我們以作處理。

PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取

python免費學習資料、代碼以及交流解答點擊即可加入

在本文中,我們將學習Python中的MD5加密答恶,并詳細討論其含義和用法饺蚊。包括以下內(nèi)容:

  • 什么是MD5?
  • Python中的MD5哈希
  • 與md5相關的功能
  • 示例1:在Python中打印等效于MD5哈希的字節(jié)
  • 示例2:在Python中打印MD5哈希的十六進制等效項
  • 示例3:Python MD5文件校驗
  • 輸出與說明
  • 示例4:使用Python在MD5中編碼字符串
  • 輸出與說明
  • 示例5:在Python中計算文件的MD5哈希
  • 輸出與說明
  • 應用范圍
  • 優(yōu)點
  • 缺點
  • 結論

什么是MD5悬嗓?

MD5代表消息摘要算法走净。它是一個哈希函數(shù)拇舀,可產(chǎn)生128位哈希值献烦∨平瑁可用作校驗和驗證數(shù)據(jù)完整性碍庵。它適用于非加密目的映企,例如確定分區(qū)數(shù)據(jù)庫中特定密鑰的分區(qū)。

Python中的MD5哈希:

該哈希函數(shù)在Python的hashlib模塊中可用静浴。它以字節(jié)序列作為輸入堰氓,并返回128位哈希值作為輸出。散列函數(shù)的主要用途是檢查數(shù)據(jù)完整性苹享,但存在安全性問題双絮。

與md5相關的功能:

  • encode():將字符串轉(zhuǎn)換為字節(jié)
  • digest(): 以字節(jié)格式返回編碼數(shù)據(jù)
  • hexdigest():以十六進制格式返回編碼的數(shù)據(jù)

示例1:在Python中打印等效于MD5哈希的字節(jié)

import hashlib 
 
result = hashlib.md5(b'Python Pool') 
print("Hash Value : ", end ="")
print(result)
print("Equivalent Byte : ", end ="") 
print(result.digest()) 

輸出和說明:


在此代碼中,我們采用字節(jié)輸入得问,這是哈希函數(shù)可接受的囤攀。然后,我們使用md5哈希函數(shù)對該值進行編碼宫纬。最后焚挠,我們使用digest()函數(shù)生成了編碼字符串的等效字節(jié)。

示例2:在Python中打印MD5哈希的十六進制等效項

import hashlib 
 
result = hashlib.md5('Python Pool'.encode()) 
print("Hash Value : ", end ="")
print(result)
print("Hexadecimal Equivalent : ", end ="") 
print(result.hexdigest()) 

輸出和說明:


在這里漓骚,我們使用encode()函數(shù)將字符串轉(zhuǎn)換為等效的字節(jié)蝌衔,從而使其被哈希函數(shù)接受。然后蝌蹂,我們使用md5函數(shù)對其進行編碼噩斟,最后,使用hexdigest()函數(shù)顯示其十六進制等效項孤个。

示例3:Python MD5文件校驗

md5_hash = hashlib.md5()
 
file = open("test.txt", "rb")
content = file.read()
md5_hash.update(content)
 
result = md5_hash.hexdigest()
print(result)

輸出和說明:


在此代碼中剃允,調(diào)用hashlib.md5()函數(shù)以創(chuàng)建MD5對象。我們以“ rb”模式打開了一個文件齐鲤,其中rb代表“ read bytes”斥废。使用read()方法,我們將文件的內(nèi)容讀取到一個變量中佳遂。update()方法更新文件內(nèi)容营袜。最后,使用hexdigest()方法丑罪,我們將哈希值轉(zhuǎn)換為等效的十六進制值荚板。

示例4:使用Python在MD5中編碼字符串

import hashlib 
string = "pythonpool.com"
encoded=string.encode()
result = hashlib.md5(encoded)
print("String : ", end ="")
print(string)
print("Hash Value : ", end ="")
print(result)
print("Hexadecimal equivalent: ",result.hexdigest())

輸出和說明:


在此示例中凤壁,我們使用hashlib.md5()函數(shù)將字符串值編碼為哈希值。然后跪另,我們使用hexdigest()方法來獲取生成的哈希值的十六進制等效項拧抖。同樣,我們也可以使用digest()方法來獲取與生成的哈希值等效的字節(jié)免绿。

示例5:在Python中計算文件的MD5哈希

import hashlib
 
with open("sample.txt","rb") as f:
    bytes = f.read()
    print("Bytes read from the file:",bytes)
    result = hashlib.md5(bytes)
    print("Hah Value: ",result)
    print("The hexadecimal equivalent: ")
    print(result.hexdigest())

輸出和說明:


在此代碼中唧席,我們首先創(chuàng)建了一個示例文本文件。然后嘲驾,我們以字節(jié)為單位讀取該文件的內(nèi)容淌哟。我們將字節(jié)轉(zhuǎn)換為哈希值,然后最終看到相同的十六進制等效項辽故。

應用范圍:

  • 在軟件中使用徒仓,以確保傳輸?shù)奈募暾麩o缺
  • 通過為在法律發(fā)現(xiàn)過程中交換的每個文檔提供唯一的標識符,它也可用于電子發(fā)現(xiàn)(對可能涉及到訴訟相關的電子證據(jù)的歸檔和再現(xiàn))
    優(yōu)點
  • 提供一個任意大小的安全輸入(如果使用128位誊垢,則可以產(chǎn)生輸出)
  • 原始消息的消息摘要的生成非常簡單
  • 可以執(zhí)行具有任意位數(shù)的消息的消息摘要
    缺點
  • 容易出現(xiàn)哈希沖突的弱點
  • 沒有提供針對這些碰撞攻擊的安全性
  • 與優(yōu)化的SHA算法相比掉弛,速度相當慢

總結

在本文中,我們討論了python中的md5哈希函數(shù)喂走。我們看到了相同的各種示例殃饿,還了解了它的各種應用。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芋肠,一起剝皮案震驚了整個濱河市乎芳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌业栅,老刑警劉巖秒咐,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碘裕,居然都是意外死亡携取,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門帮孔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雷滋,“玉大人,你說我怎么就攤上這事文兢∥钫叮” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵姆坚,是天一觀的道長澳泵。 經(jīng)常有香客問我,道長兼呵,這世上最難降的妖魔是什么兔辅? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任腊敲,我火速辦了婚禮,結果婚禮上维苔,老公的妹妹穿的比我還像新娘碰辅。我一直安慰自己,他們只是感情好介时,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布没宾。 她就那樣靜靜地躺著,像睡著了一般沸柔。 火紅的嫁衣襯著肌膚如雪循衰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天勉失,我揣著相機與錄音羹蚣,去河邊找鬼。 笑死乱凿,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的咽弦。 我是一名探鬼主播徒蟆,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼型型!你這毒婦竟也來了段审?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤闹蒜,失蹤者是張志新(化名)和其女友劉穎寺枉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绷落,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡姥闪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了砌烁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筐喳。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖函喉,靈堂內(nèi)的尸體忽然破棺而出避归,到底是詐尸還是另有隱情,我是刑警寧澤管呵,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布梳毙,位于F島的核電站,受9級特大地震影響捐下,放射性物質(zhì)發(fā)生泄漏账锹。R本人自食惡果不足惜堂氯,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牌废。 院中可真熱鬧咽白,春花似錦、人聲如沸鸟缕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懂从。三九已至授段,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間番甩,已是汗流浹背侵贵。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缘薛,地道東北人窍育。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像宴胧,于是被迫代替她去往敵國和親漱抓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容