欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中的哈希算法模塊hashlib詳解

 更新時間:2023年08月11日 09:50:22   作者:微小冷  
這篇文章主要介紹了Python中的哈希算法模塊hashlib詳解,hashlib模塊實現了多種哈希算法,包括MD5以及SHA家族的算法,通過algorithms_guaranteed可以查看hashlib中封裝的所有算法,需要的朋友可以參考下

hashlib模塊

hashlib 模塊實現了多種哈希算法,包括MD5以及SHA家族的算法,通過 algorithms_guaranteed 可以查看 hashlib 中封裝的所有算法

>>> from pprint import pprint
>>> pprint(hashlib.algorithms_guaranteed)
{'blake2b',
 'blake2s',
 'md5',
 'sha1',
 'sha224',
 'sha256',
 'sha384',
 'sha3_224',
 'sha3_256',
 'sha3_384',
 'sha3_512',
 'sha512',
 'shake_128',
 'shake_256'}

整理如下

構造器算法
md5md5
sha家族sha1, sha224, sha256, sha384, sha512
sha3家族sha3_224, sha3_256, sha3_384, sha3_512,
BLAKE2blake2b, blake2s
shakeshake_128, shake_256

這些哈希算法擁有相同的外部接口,以 md5 為例,調用方式大致為

import hashlib
x = hashlib.md5()
x.update(b"tinycool")
x.hexdigest()
# '90cba0172a608c7d3784ba159e6a9ef1'
x.digest()
# b'\x90\xcb\xa0\x17*`\x8c}7\x84\xba\x15\x9ej\x9e\xf1'

其中, update 表示以二進制字符串作為密鑰進行哈希, digest 和 hexdigest 分別表示將生成的哈希碼通過二進制和十六進制的形式表現出來。

封裝算法簡介

md5算法,MD即信息摘要(Message-Digest),md5可以理解為第五代信息摘要算法,于1992年公開,用以取代md4,但在2004年已經被證實無法防止碰撞,從而不適用于安全性認證,但目前來說還是有人在用。

相比之下,SHA,即安全散列算法(Secure Hash Algorithm),是美國政府的加密標準,相對來說更加安全。其中sha1生成160bit長度的信息摘要,其他SHA函數,以sha224為例,224表示產生的信息摘要長度為224bit,以此類推。

blake2b和blake2s分別針對64位操作系統(tǒng)和32位操作系統(tǒng)進行優(yōu)化,以生成最長64位和最長32位的位數可變的信息摘要。

shake_128和shake_256可生成位數可變的信息摘要,二者的最大位數分別是128和256位。

new函數

通過 new 函數,可以更加統(tǒng)一地生成哈希對象,例如

x = hashlib.new('sha256')
x.update(b"tinycool")
x.hexdigest()
# '96d424d9d77972f28b5a11e8c2bddd67542e7784e01b7dcca51154babb2b54ea'

即 hashlib.new('xxx') 和 hashlib.xxx() 是相同的,當然 xxx 得是 haslib 中封裝好的哈希函數。

接下來演示一下 shake_128 函數

x = hashlib.new('shake_128')
x.update(b"tinycool")
x.hexdigest(15)
# '8f8f153833e5159d548f4371af9855'
x.hexdigest(25)
# '8f8f153833e5159d548f4371af9855e0affc9ddae8d6c98bee'

可見,在 hexdigest 中輸入不同的長度,返回了不同長度的十六進制字符串。

通過 new 創(chuàng)建的哈希對象,有三個可調用的屬性

  • digest_size 哈希對象的字節(jié)數。
  • block_size 哈希算法內部塊的字節(jié)數。
  • name 哈希算法名字

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

相關文章

  • Python中集合的內建函數和內建方法學習教程

    Python中集合的內建函數和內建方法學習教程

    這篇文章主要介紹了Python中集合的內建函數和內建方法學習教程,包括工廠函數和僅用于可變集合的方法等知識點,需要的朋友可以參考下
    2015-08-08
  • Python Tornado 實現SSE服務端主動推送方案

    Python Tornado 實現SSE服務端主動推送方案

    SSE是Server-Sent Events 的簡稱,是一種服務器端到客戶端(瀏覽器)的單項消息推送,本文主要探索兩個方面的實踐一個是客戶端發(fā)送請求,服務端的返回是分多次進行傳輸的,直到傳輸完成,這種情況下請求結束后,考慮關閉SSE,所以這種連接可以認為是暫時的,感興趣的朋友一起看看吧
    2024-01-01
  • python編譯pyc文件的過程解析

    python編譯pyc文件的過程解析

    pyc是一種二進制文件,是由py文件經過編譯后,生成的文件,是一種byte code,這篇文章主要介紹了python編譯pyc文件,需要的朋友可以參考下
    2021-09-09
  • Python中字符串的基礎介紹及常用操作總結

    Python中字符串的基礎介紹及常用操作總結

    字符串輸出格式與輸入的樣子相同,都是用撇號包裹,撇號和其它特殊字符用用反斜杠轉義。如果字符串中有單撇號而沒有雙撇號則用雙撇號包裹,否則應該用單撇號包裹。后面要介紹的print語句可以不帶撇號或轉義輸出字符串
    2021-09-09
  • Python 實現將numpy中的nan和inf,nan替換成對應的均值

    Python 實現將numpy中的nan和inf,nan替換成對應的均值

    這篇文章主要介紹了Python 實現將numpy中的nan和inf,nan替換成對應的均值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 使用python對excel表格處理的一些小功能

    使用python對excel表格處理的一些小功能

    這篇文章主要介紹了使用python對excel表格處理的一些小功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 關于jieba.cut與jieba.lcut的區(qū)別及說明

    關于jieba.cut與jieba.lcut的區(qū)別及說明

    這篇文章主要介紹了關于jieba.cut與jieba.lcut的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python 正則表達式的使用

    python 正則表達式的使用

    這篇文章主要介紹了python 正則表達式的使用,Python 中正則表達式應用非常廣泛,如數據挖掘、數據分析、網絡爬蟲、輸入有效性驗證等,Python 也提供了利用正則表達式實現文本的匹配、查找和替換等操作的 re 模塊,下面和小編一起進入文章了解具體內容吧
    2021-10-10
  • python requests 使用快速入門

    python requests 使用快速入門

    這篇文章主要介紹了python requests 使用快速入門教程,使用 Requests 發(fā)送網絡請求非常簡單,具體操作方法,大家參考下本文吧
    2017-08-08
  • Python實現合并兩個列表的方法分析

    Python實現合并兩個列表的方法分析

    這篇文章主要介紹了Python實現合并兩個列表的方法,結合實例形式對比分析了常見的Python列表合并操作技巧,需要的朋友可以參考下
    2018-05-05

最新評論