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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】hashlib模块实现MD5加密

發布時間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】hashlib模块实现MD5加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被計算機安全領域廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(hash value),
用以提供消息的完整性保護,用于確保信息傳輸完整一致。
MD5是最常見的摘要算法,速度很快,生成結果是固定的128 bit字節,通常用一個32位的16進制字符串表示。

MD5是一個安全的散列算法,輸入兩個不同的明文不會得到相同的輸出值,根據輸出值,不能得到原始的明文,即其過程不可逆。所以要解密MD5沒有現成的算法,只能用窮舉法,把可能出現的明文,用MD5算法散列之后,把得到的散列值和原始的數據形成一個一對一的映射表,通過比在表中比破解密碼的MD5算法散列值,通過匹配從映射表中找出破解密碼所對應的原始明文。

MD5算法具有以下特點:

1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
4、弱抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
5、強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD5值,是非常困難的。

MD5算法使用的特性:

方便存儲:MD5加密出來都是32位的字符串,能夠給定固定大小的空間存儲,傳輸,驗證
文件加密:MD5算法運用在文件加密上很有優勢,應為只需要32為字符串就能對一個巨大的文件進行驗證完整性
不 可 逆:MD5加密出來只會截取末尾32位,具有良好的安全性,如果是對于參數加密很難偽造MD5
加密損耗低:MD5算法加密對于性能的消耗微乎其微(速度快)

MD5算法的實際應用

1.密碼驗證
可以當做密碼驗證,為了保證密碼不在cmd5網站上破譯,最好加鹽及亂序,也可以只取一部分md5加密后的內容。md5是不可逆算法,只要保證算法不變,就能和數據庫中的md5相匹配。
郵箱密碼驗證過程:首先用戶創建郵箱時,郵件系統會對密碼進行md5加密后存儲到數據庫,這個時候在數據庫里面看到的密碼是加密的,保證密碼只能用戶自己知道,減少密碼泄漏的風險。
等到你登陸郵箱時,系統不是檢驗用戶的密碼,而是檢驗用戶輸入的密碼經md5加密以后和數據庫內加密密碼進行對比,判斷是否相等。

2.請求參數校驗
對于服務器來來說,除了系統問題最大的問題就是害怕請求被攔截,攔截后修改參數后就會出現很多漏洞的可能性。
為了避免被攔截、參數被修改,常用方法就是對請求參數進行校驗,就算攔截了請求參數并修改它,只要模擬不出MD5加密出來的值,服務器過濾器直接就會進行攔截。
校驗過程:客戶端通過http或者https請求服務器時,對其中的參數按約定的MD5加密方法生成一個token,服務器接收信息后按照同樣的MD5加密方法生成一個值,然后對比客戶端傳過來的token進行對比,一致說明請求參數沒有被修改。

3.版權驗證
當一個視頻或者音頻創作出來的時候它的md5是唯一的,若以后有翻錄等版本出來,即使畫質,聲音,文件名都一樣,但是他們的md5驗證是不一樣的,所以可以驗證版權。
還比如用某一賬戶下載的視頻它的賬戶信息也會和視頻一起md5操作,如果以后這個人私自傳播通過md5就可以去數據庫中查找泄露版權的情況。

4.文件上傳
文件上傳時會上傳文件的信息,此時將文件的md5上傳,服務器中存儲這個md5值,并存儲這個md5值所對應的已上傳字節長度,比如未上傳對應為0,已上傳對應為-1,已上傳200字節就對應200,這個上傳的時候可以匹配到這個文件在服務器中的狀態,方便做斷點續傳,只要源文件沒有更改,即使換個名字,換個賬戶都可以在服務器找到對應的文件,所以當服務器中有已經上傳完畢的此文件時,別人再上傳這個文件就可以實現秒傳。

Python的hashlib提供了常見的摘要算法,如MD5,SHA1等等。
摘要算法又稱哈希算法、散列算法。它通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進制的字符串表示)。
在python3的標準庫中,已經移除了md5模塊,而關于hash加密算法都放在hashlib這個標準庫中,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。
具體代碼實現:

import hashlib import timeencode = 'utf-8' # 編碼 appkey = 'md5test.' # 待加密信息time_span = str(int(time.time())) o_token = appkey # 可以對o_token進行處理appkey+time_span hl = hashlib.md5() # 創建md5對象 hl.update(o_token.encode(encoding=encode)) # 轉換為bytes token = hl.hexdigest().upper() # hexdigest() 加密過程 print('第一種MD5加密后為 :' + token)# 另一種寫法:b前綴代表的就是bytes str_md5 = hashlib.md5(b'md5test.').hexdigest().upper() print('第二種MD5加密后為 :' + str_md5)

總結

以上是生活随笔為你收集整理的【Python】hashlib模块实现MD5加密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。