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

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

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

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

一、基本用法

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

關(guān)鍵說明:

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

二、常用哈希算法及示例

hashlib支持多種主流算法,如md5sha1、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. 獲取哈希值(十六進(jìn)制字符串)
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()
# 示例:計(jì)算某文件的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()返回十六進(jìn)制字符串類型的哈希值
digest_size哈希值的字節(jié)長度(如 SHA-256 為 32 字節(jié))
block_size算法的塊大小(用于內(nèi)部計(jì)算)
algorithms_available系統(tǒng)支持的所有哈希算法列表
algorithms_guaranteed所有 Python 環(huán)境都保證支持的算法列表

四、注意事項(xiàng)

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

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

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

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

通過hashlib,可以便捷地實(shí)現(xiàn)數(shù)據(jù)哈希計(jì)算,滿足數(shù)據(jù)校驗(yàn)、安全存儲等需求。實(shí)際使用時(shí)需根據(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ā)一個(gè)GUI應(yīng)用程序,該應(yīng)用程序可以選擇文件夾中的.lnk(快捷方式)文件,并將選中的文件導(dǎo)出為特定格式的buttons.ini配置文件,需要的朋友可以參考下
    2025-01-01
  • 純Python代碼從零構(gòu)建一個(gè)AI多智能體系統(tǒng)

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

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

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

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

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

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

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

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

    Pycharm如何對python文件進(jìn)行打包

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

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

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

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

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

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

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

    Python多線程編程簡單介紹

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

最新評論

安岳县| 增城市| 连山| 微博| 枞阳县| 平昌县| 吉木乃县| 封丘县| 平凉市| 丹阳市| 黄平县| 台湾省| 奉贤区| 休宁县| 随州市| 齐河县| 始兴县| 瑞金市| 略阳县| 旺苍县| 武宁县| 昌乐县| 辉南县| 手机| 施甸县| 雷波县| 宁乡县| 乌兰浩特市| 宿松县| 延川县| 普兰县| 台前县| 行唐县| 清新县| 巩留县| 六安市| 股票| 句容市| 双柏县| 苏尼特左旗| 新和县|