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

Python常用內(nèi)建模塊hashlib、hmac詳解

 更新時間:2023年08月11日 10:25:47   作者:是小先生  
這篇文章主要介紹了Python常用內(nèi)建模塊hashlib、hmac詳解,摘要算法又稱哈希算法、散列算法,它通過一個函數(shù),把任意長度的數(shù)據(jù)轉(zhuǎn)換為一個長度固定的數(shù)據(jù)串,需要的朋友可以參考下

一、摘要算法簡介(hashlib)

python的hashlib模塊針對不同的安全哈希和消息摘要算法實現(xiàn)了一個通用的接口。

包括: FIPS 的 SHA1, SHA224, SHA256, SHA384, and SHA512 (定義于 FIPS 180-2) 算法,以及 RSA 的 MD5 算法。

1、哈希算法

每種類型的hash都有一個構(gòu)造方法,都會返回一個具有相同的簡單接口的hash對象。

例如,使用 use  sha256()  創(chuàng)建一個 SHA-256 hash 對象。

你可以使用  update()  方法向這個對象輸入字節(jié)類對象。

在任何時候你都可以使用  digest()  或  hexdigest()  方法獲得到目前為止輸入這個對象的拼接數(shù)據(jù)的 digest。

哈希基于字節(jié),所以updata()不支持輸入字符串對象。

 更簡要的寫法:

 2、屬性方法

hash.digest_size

以字節(jié)表示的結(jié)果哈希對象的大小。

hash.block_size

以字節(jié)表示的哈希算法的內(nèi)部塊大小。

hash.update (data)

用 bytes-like object 來更新哈希對象。 重復(fù)調(diào)用相當(dāng)于單次調(diào)用并傳入所有參數(shù)的拼接結(jié)果:  m.update(a); m.update(b)  等價于  m.update(a+b) 。

注意:為了更好的多線程性能,在對象創(chuàng)建或者更新時,若數(shù)據(jù)大于2047字節(jié)則 Python 的 GIL 會被釋放。

hash.digest()

返回當(dāng)前已傳給updata()方法的數(shù)據(jù)摘要。這是一個大小為digest_size的字節(jié)串對象,字節(jié)串中可包含0-255的完整取值范圍。

hash.hexdigest()

類式于digest()但摘要會以兩倍長度字符串對象的形式返回,其中僅包含十六進(jìn)制數(shù)碼。這可以被用于在電子郵件或其他非二進(jìn)制環(huán)境中安全地交換數(shù)據(jù)值,

hash.copy()

返回哈希對象的副本,這可被用來高效地計算共享相同初始子串的數(shù)據(jù)的摘要。

3、shake可變長度摘要

shake_128()和shake_256()算法提供安全的length_in_bits //2至128或256位可變長度摘要。

為此,它們的摘要需指定一個長度。shake算法不限制最大長度。

二、摘要算法應(yīng)用

任何允許用戶登錄的網(wǎng)站都會存儲用戶登錄的用戶名和口令。如何存儲用戶名和口令呢?

方法是存到數(shù)據(jù)庫表中:

namepassword
michael123456
bobabc999
alicealice2008

如果以明文保存用戶口令,如果數(shù)據(jù)庫泄露,所有用戶的口令就落入黑客的手里。

此外,網(wǎng)站運維人員是可以訪問數(shù)據(jù)庫的,也就是能獲取到所有用戶的口令。

正確的保存口令的方式是不存儲用戶的明文口令,而是存儲用戶口令的摘要,比如MD5:

namepassword
michaele10adc3949ba59abbe56e057f20f883e
bob878ef96e86145580c38c87f0410ad153
alice99b1c2188db85afee403b1536010c2c9

當(dāng)用戶登錄時,首先計算用戶輸入的明文口令的MD5,然后和數(shù)據(jù)庫存儲的MD5對比,如果一致,說明口令輸入正確,如果不一致,口令肯定錯誤。

三、基于秘鑰的消息驗證(hmac)

hmac. new (key, msg=None, digestmod='')

返回一個新的 hmac 對象。 key 是一個指定密鑰的 bytes 或 bytearray 對象。 如果提供了 msg,將會調(diào)用  update(msg)  方法。

 digestmod 為 HMAC 對象所用的摘要名稱、摘要構(gòu)造器或模塊。

 雖然該參數(shù)位置靠后,但它卻是必須的。

1、方法

hmac.update(msg)

用msg來更新hmac對象,重復(fù)調(diào)用相當(dāng)于單次調(diào)用并傳入所有參數(shù)的拼接結(jié)果。

hmac.digest()

返回當(dāng)前已傳給  update()  方法的字節(jié)串?dāng)?shù)據(jù)的摘要。 這個字節(jié)串?dāng)?shù)據(jù)的長度將與傳給構(gòu)造器的摘要的長度 digest_size 相同。 它可以包含非 ASCII 的字節(jié),包括 NUL 字節(jié)。

hmac.hexdigest()

類似digest()但摘要會以兩倍長度字符串的形式返回,其中僅包含十六進(jìn)制數(shù)碼,這可以被用于在電子郵件或其他非二進(jìn)制環(huán)境中安全地交換數(shù)據(jù)值。

hmac.copy ()

返回 hmac 對象的副本(“克?。?。 這可被用來高效地計算共享相同初始子串的數(shù)據(jù)的摘要。

2、屬性

HMAC. digest_size

以字節(jié)表示的結(jié)果 HMAC 摘要的大小。

HMAC. block_size

以字節(jié)表示的哈希算法的內(nèi)部塊大小。

3、輔助函數(shù)

hmac. compare_digest (a, b)

返回  a == b 。

此函數(shù)使用一種經(jīng)專門設(shè)計的方式通過避免基于內(nèi)容的短路行為來防止定時分析,使得它適合處理密碼。

 a 和 b 必須為相同的類型:或者是 str

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

相關(guān)文章

  • 套娃式文件夾如何通過Python批量處理

    套娃式文件夾如何通過Python批量處理

    這篇文章主要介紹了套娃式文件夾如何通過Python批量處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python經(jīng)典五人分魚實例講解

    Python經(jīng)典五人分魚實例講解

    在本篇文章里小編給大家分享的是一篇關(guān)于Python 五人分魚的經(jīng)典小游戲?qū)嵗齼?nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 利用python微信庫itchat實現(xiàn)微信自動回復(fù)功能

    利用python微信庫itchat實現(xiàn)微信自動回復(fù)功能

    最近發(fā)現(xiàn)了一個特別好玩的Python 微信庫itchat,可以實現(xiàn)自動回復(fù)等多種功能,下面這篇文章主要給大家介紹了利用python微信庫itchat實現(xiàn)微信自動回復(fù)功能的相關(guān)資料,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-05-05
  • python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)鳶尾花分類

    python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)鳶尾花分類

    這篇文章主要介紹了python 使用Tensorflow訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)鳶尾花分類,幫助大家更好的利用python進(jìn)行深度學(xué)習(xí),感興趣的朋友可以了解下
    2021-05-05
  • Python實現(xiàn)的ini文件操作類分享

    Python實現(xiàn)的ini文件操作類分享

    這篇文章主要介紹了Python實現(xiàn)的ini文件操作類分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2014-11-11
  • 淺析Python中全局變量和局部變量的使用

    淺析Python中全局變量和局部變量的使用

    一個變量的名稱除了可以代表不同的東西以外,也表示“哪里可以使用”這個變量,這篇文章將會介紹全局變量和局部變量的用法和差異,感興趣的可以了解下
    2021-06-06
  • Python基于TCP實現(xiàn)會聊天的小機(jī)器人功能示例

    Python基于TCP實現(xiàn)會聊天的小機(jī)器人功能示例

    這篇文章主要介紹了Python基于TCP實現(xiàn)會聊天的小機(jī)器人功能,結(jié)合實例形式分析了Python通過socket模塊實現(xiàn)TCP連接的客戶端與服務(wù)器端模擬聊天機(jī)器人功能相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • python 在threading中如何處理主進(jìn)程和子線程的關(guān)系

    python 在threading中如何處理主進(jìn)程和子線程的關(guān)系

    這篇文章主要介紹了python 在threading中如何處理主進(jìn)程和子線程的關(guān)系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • PyTorch定義Tensor及索引和切片(最新推薦)

    PyTorch定義Tensor及索引和切片(最新推薦)

    這篇文章主要介紹了PyTorch定義Tensor以及索引和切片,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python 實現(xiàn)音頻疊加的示例

    python 實現(xiàn)音頻疊加的示例

    這篇文章主要介紹了python 實現(xiàn)音頻疊加的示例,幫助大家更好的理解和使用python處理聲音文件,感興趣的朋友可以了解下
    2020-10-10

最新評論