最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3?hashlib?模塊基本用法詳解

 更新時間:2025年10月23日 09:17:12   作者:小陶coding  
在Python3中,hashlib模塊提供了一系列加密哈希算法的實現(xiàn),用于計算數(shù)據(jù)的哈希值,本文給大家介紹Python3?hashlib模塊基本用法,感興趣的朋友跟隨小編一起看看吧

在 Python3 中,hashlib模塊提供了一系列加密哈希算法的實現(xiàn),用于計算數(shù)據(jù)的哈希值。哈希算法(又稱散列算法)通過將任意長度的輸入數(shù)據(jù)轉(zhuǎn)換為固定長度的輸出(哈希值),具有單向性(無法從哈希值反推原始數(shù)據(jù))和唯一性(不同數(shù)據(jù)大概率產(chǎn)生不同哈希值)的特點,常用于數(shù)據(jù)校驗、密碼存儲、數(shù)字簽名等場景。

一、基本用法

hashlib的核心流程是:創(chuàng)建哈希對象 → 更新數(shù)據(jù) → 獲取哈希值。

關(guān)鍵說明:

  • 哈希算法處理的是字節(jié)數(shù)據(jù)(bytes),因此字符串需先通過encode()編碼為 bytes(如utf-8)。
  • 可通過update()多次傳入數(shù)據(jù),最終計算的是所有數(shù)據(jù)的總哈希值(適合分塊處理大數(shù)據(jù))。
  • 哈希值可通過digest()(返回 bytes 類型)或hexdigest()(返回十六進制字符串,更易讀)獲取。

二、常用哈希算法及示例

hashlib支持多種主流算法,如md5、sha1、sha256、sha512等(安全性:sha512 > sha256 > sha1 > md5)。

1. MD5

import hashlib
# 1. 創(chuàng)建MD5哈希對象
md5_hash = hashlib.md5()
# 2. 更新數(shù)據(jù)(需傳入bytes類型)
data = "hello world"
md5_hash.update(data.encode("utf-8"))  # 字符串編碼為bytes
# 3. 獲取哈希值(十六進制字符串)
print(md5_hash.hexdigest())  # 輸出:5eb63bbbe01eeed093cb22bb8f5acdc3

2. SHA-256

import hashlib
# 直接傳入bytes數(shù)據(jù)(b前綴表示bytes)
sha256_hash = hashlib.sha256(b"hello world")
# 獲取哈希值
print(sha256_hash.hexdigest())  # 輸出:a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e44b0

3. 分塊更新數(shù)據(jù)(適合大文件)

對于大文件或流式數(shù)據(jù),可分多次調(diào)用update()累積數(shù)據(jù),避免一次性加載到內(nèi)存:

import hashlib
def calculate_file_hash(file_path, algorithm="sha256"):
    # 創(chuàng)建指定算法的哈希對象(通過hashlib.new()支持動態(tài)指定算法)
    hash_obj = hashlib.new(algorithm)
    # 分塊讀取文件并更新哈希
    with open(file_path, "rb") as f:
        while chunk := f.read(4096):  # 每次讀取4096字節(jié)(可調(diào)整)
            hash_obj.update(chunk)
    return hash_obj.hexdigest()
# 示例:計算某文件的SHA-256哈希
print(calculate_file_hash("large_file.zip"))  # 輸出文件的哈希值

三、重要屬性與方法

方法 / 屬性說明
hashlib.new(algorithm)創(chuàng)建指定算法的哈希對象(如new("sha3_256")
update(data)向哈希對象傳入數(shù)據(jù)(data 必須為 bytes)
digest()返回 bytes 類型的哈希值
hexdigest()返回十六進制字符串類型的哈希值
digest_size哈希值的字節(jié)長度(如 SHA-256 為 32 字節(jié))
block_size算法的塊大?。ㄓ糜趦?nèi)部計算)
algorithms_available系統(tǒng)支持的所有哈希算法列表
algorithms_guaranteed所有 Python 環(huán)境都保證支持的算法列表

四、注意事項

  1. 安全性MD5SHA1已被證明存在安全漏洞,不推薦用于密碼存儲、數(shù)字簽名等安全場景,建議使用SHA-256、SHA-512或更先進的SHA3系列。
  2. 數(shù)據(jù)類型:必須傳入 bytes 類型數(shù)據(jù),字符串需先編碼(如str.encode("utf-8")),否則會報錯。
  3. 哈希碰撞:理論上不同數(shù)據(jù)可能產(chǎn)生相同哈希值(碰撞),但好的算法(如 SHA-256)碰撞概率極低,可忽略。

五、擴展:帶密鑰的哈希(HMAC)

hashlib常與hmac模塊配合使用,實現(xiàn)帶密鑰的哈希(HMAC),用于身份驗證等場景(如 API 簽名):

import hmac
import hashlib
key = b"my_secret_key"  # 密鑰(bytes類型)
data = b"hello world"   # 待加密數(shù)據(jù)
# 計算HMAC-SHA256
hmac_obj = hmac.new(key, data, digestmod=hashlib.sha256)
print(hmac_obj.hexdigest())  # 輸出帶密鑰的哈希值

通過hashlib,可以便捷地實現(xiàn)數(shù)據(jù)哈希計算,滿足數(shù)據(jù)校驗、安全存儲等需求。實際使用時需根據(jù)場景選擇合適的算法,并注意數(shù)據(jù)類型和安全性要求。

到此這篇關(guān)于Python3 hashlib 模塊的文章就介紹到這了,更多相關(guān)Python hashlib 模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python創(chuàng)建LNK文件選擇器并導(dǎo)出配置文件

    使用Python創(chuàng)建LNK文件選擇器并導(dǎo)出配置文件

    在這篇博客中,我將介紹如何使用Python的wxPython庫開發(fā)一個GUI應(yīng)用程序,該應(yīng)用程序可以選擇文件夾中的.lnk(快捷方式)文件,并將選中的文件導(dǎo)出為特定格式的buttons.ini配置文件,需要的朋友可以參考下
    2025-01-01
  • 純Python代碼從零構(gòu)建一個AI多智能體系統(tǒng)

    純Python代碼從零構(gòu)建一個AI多智能體系統(tǒng)

    單個 AI 能做的事有限,三個 AI 分工協(xié)作能做的事遠超你想象,本文介紹了如何使用Python實現(xiàn)一個多智能體系統(tǒng),文中還提供了系統(tǒng)架構(gòu)設(shè)計、代碼實現(xiàn)和執(zhí)行流程詳解,希望對大家有所幫助
    2026-04-04
  • python實現(xiàn)TCPclient的使用示例

    python實現(xiàn)TCPclient的使用示例

    python實現(xiàn)TCPclient是一件簡單的事情,只要通過socket這個模塊就可以實現(xiàn),本文主要介紹了python實現(xiàn)TCPclient的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 基于python實現(xiàn)自動化文件移動工具

    基于python實現(xiàn)自動化文件移動工具

    在現(xiàn)代辦公和數(shù)據(jù)處理環(huán)境中,文件的頻繁遷移和整理是一項常見且耗時的任務(wù),本文將詳細介紹一個基于Python的自動化文件遷移工具,可以實時監(jiān)控指定文件夾,需要的可以了解下
    2025-07-07
  • Python數(shù)據(jù)分析之NumPy常用函數(shù)使用詳解

    Python數(shù)據(jù)分析之NumPy常用函數(shù)使用詳解

    本篇將介紹怎樣從文件中載入數(shù)據(jù),以及怎樣使用NumPy的基本數(shù)學(xué)和統(tǒng)計分析函數(shù)、學(xué)習(xí)讀寫文件的方法,并嘗試函數(shù)式編程和NumPy線性代數(shù)運算,來學(xué)習(xí)NumPy的常用函數(shù),需要的可以參考一下
    2022-05-05
  • Pycharm如何對python文件進行打包

    Pycharm如何對python文件進行打包

    這篇文章主要介紹了Pycharm如何對python文件進行打包,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python使用wxpy輕松實現(xiàn)微信防撤回的方法

    python使用wxpy輕松實現(xiàn)微信防撤回的方法

    今天小編就為大家分享一篇python使用wxpy輕松實現(xiàn)微信防撤回的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python面向?qū)ο笤砼c基礎(chǔ)語法詳解

    Python面向?qū)ο笤砼c基礎(chǔ)語法詳解

    這篇文章主要介紹了Pyhton面向?qū)ο笤砼c基礎(chǔ)語法,結(jié)合實例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計中的基本原理、概念、語法與相關(guān)使用技巧,需要的朋友可以參考下
    2020-01-01
  • pandas實現(xiàn)datetime64與unix時間戳互轉(zhuǎn)

    pandas實現(xiàn)datetime64與unix時間戳互轉(zhuǎn)

    這篇文章主要介紹了pandas實現(xiàn)datetime64與unix時間戳互轉(zhuǎn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python多線程編程簡單介紹

    Python多線程編程簡單介紹

    這篇文章主要介紹了Python多線程編程簡單介紹,本文講解了創(chuàng)建線程、Thread對象函數(shù)、常用示例等內(nèi)容,需要的朋友可以參考下
    2015-04-04

最新評論

英超| 罗定市| 汉沽区| 长宁区| 沁阳市| 汉阴县| 延安市| 澄迈县| 万源市| 新蔡县| 韶山市| 北票市| 精河县| 辽宁省| 丰都县| 松原市| 全南县| 邯郸县| 广东省| 衡东县| 文登市| 峨山| 金寨县| 马龙县| 四会市| 保山市| 贵阳市| 三穗县| 张掖市| 大城县| 连平县| 法库县| 兴仁县| 无棣县| 三都| 孝义市| 资中县| 临汾市| 渭源县| 龙门县| 麟游县|