Python MD5算法使用


 

## md5算法簡介
1.  **簡介**
   MD5消息摘要算法(MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(hash value),用於確保信息傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4算法。
2.  **用途**
   * **一致性驗證**   對一段信息(Message)產生信息摘要(Message-Digest),以防止被篡改。
    MD5可以為任何文件(不管其大小、格式、數量)產生一個同樣獨一無二的“數字指紋”,如果任何人對文件做了任何改動,其MD5值也就是對應的“數字指紋”都會發生變化。
   * **數字簽名**   對一段Message(字節串)產生fingerprint(指紋),以防止被“篡改”。(數字證書)
   * **安全訪問認證**   密碼加密存儲

## Python中使用md5加密字符串
   MD5是hash算法的一種。
# 導入hash算法庫
import hashlib
# 得到md5算法對象
hash_md5 = hashlib.md5()
# 准備要計算md5的數據(bytes類型)
data = '二進制數據'.encode('utf-8', errors='ignore')
# 計算
hash_md5.update(data)
# 獲取計算結果(16進制字符串,32位字符)
md5_str = hash_md5.hexdigest()
# 打印結果
print(md5_str)
```
注意: md5算法在使用時,數據可以分多次傳遞給update方法。所以,如下代碼的結果,和上面相同:
```python
# 導入hash算法庫
import hashlib
# 得到md5算法對象
hash_md5 = hashlib.md5()
# 准備要計算md5的數據(bytes類型),第一部分
data1 = '二進制'.encode('utf-8', errors='ignore')
# 計算第一部分數據
hash_md5.update(data1)
# 准備要計算md5的數據(bytes類型),第二部分
data2 = '數據'.encode('utf-8', errors='ignore')
# 計算第一部分數據
hash_md5.update(data2)
# 獲取計算結果(16進制字符串,32位字符)
md5_str = hash_md5.hexdigest()
# 打印結果
print(md5_str)
```

## Python中使用md5算法獲取文件MD5摘要
```python
# 導入hash算法庫
import hashlib

def file_md5sum(file_path):
    '''計算文件md5值'''
    # 得到md5算法對象
    hash_md5 = hashlib.md5()
    # 文件分塊讀取
    chunk_size = 4096 # 4096 字節(4KB)
    # 以二進制方式讀文件
    with open(file_path, "rb") as f:
        # 獲取分塊數據(bytes),一次讀取 chunk_size 個字節
        chunk = f.read(chunk_size)
        # 如果能讀取到內容,就一直讀取
        while bool(chunk):
            # 應用MD5算法,計算
            hash_md5.update(chunk)
            # 繼續讀
            chunk = f.read(chunk_size)
    # 返回計算結果(16進制字符串,32位字符)
    return hash_md5.hexdigest()

file_path = r'你的文件路徑' # 改成自己的文件路徑
file_md5_str = file_md5sum(file_path) # 計算給定路徑的文件的md5
# 打印文件md5值
print(file_md5_str)
# 打印文件md5值(大寫)
print(file_md5_str.upper())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM