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

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

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

一、摘要算法簡(jiǎn)介(hashlib)

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

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

1、哈希算法

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

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

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

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

哈?;谧止?jié),所以u(píng)pdata()不支持輸入字符串對(duì)象。

 更簡(jiǎn)要的寫法:

 2、屬性方法

hash.digest_size

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

hash.block_size

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

hash.update (data)

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

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

hash.digest()

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

hash.hexdigest()

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

hash.copy()

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

3、shake可變長(zhǎng)度摘要

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

為此,它們的摘要需指定一個(gè)長(zhǎng)度。shake算法不限制最大長(zhǎng)度。

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

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

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

namepassword
michael123456
bobabc999
alicealice2008

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

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

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

namepassword
michaele10adc3949ba59abbe56e057f20f883e
bob878ef96e86145580c38c87f0410ad153
alice99b1c2188db85afee403b1536010c2c9

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

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

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

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

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

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

1、方法

hmac.update(msg)

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

hmac.digest()

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

hmac.hexdigest()

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

hmac.copy ()

返回 hmac 對(duì)象的副本(“克隆)。 這可被用來高效地計(jì)算共享相同初始子串的數(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è)計(jì)的方式通過避免基于內(nèi)容的短路行為來防止定時(shí)分析,使得它適合處理密碼。

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

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

相關(guān)文章

  • 10個(gè)使用Python必須知道的內(nèi)置函數(shù)

    10個(gè)使用Python必須知道的內(nèi)置函數(shù)

    這篇文章小編主要向大家介紹的是10個(gè)使用Python必須知道的內(nèi)置函數(shù)reduce()、split()、map()等,更多后置函數(shù)請(qǐng)看下文
    2021-09-09
  • 如何在Python函數(shù)執(zhí)行前后增加額外的行為

    如何在Python函數(shù)執(zhí)行前后增加額外的行為

    有的時(shí)候會(huì)需要在函數(shù)前后添點(diǎn)額外的功能(比如過濾、計(jì)時(shí)等)時(shí),以前總是首先想到裝飾器。最近學(xué)習(xí)了Python的上下文管理器,所以本文就給大家介紹了如何在Python函數(shù)執(zhí)行前后增加額外的行為,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • Python中對(duì)URL進(jìn)行編碼的操作

    Python中對(duì)URL進(jìn)行編碼的操作

    URL編碼是一種將非ASCII字符轉(zhuǎn)換為ASCII字符序列的過程,以便在網(wǎng)絡(luò)上傳輸U(kuò)RL時(shí)保持它們的有效性和兼容性,在Python中,我們可以使用內(nèi)置的urllib.parse模塊來進(jìn)行URL編碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • 如何一鍵理清大型Python項(xiàng)目依賴樹

    如何一鍵理清大型Python項(xiàng)目依賴樹

    這篇文章主要介紹了如何一鍵理清大型Python項(xiàng)目依賴樹,文章圍繞主題相關(guān)資料展開詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下
    2022-06-06
  • Python標(biāo)準(zhǔn)庫(kù)筆記struct模塊的使用

    Python標(biāo)準(zhǔn)庫(kù)筆記struct模塊的使用

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)筆記struct模塊的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • python pandas的map函數(shù)使用

    python pandas的map函數(shù)使用

    這篇文章主要介紹了python pandas的map函數(shù)使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python對(duì)輸出的奇數(shù)偶數(shù)排序?qū)嵗a

    python對(duì)輸出的奇數(shù)偶數(shù)排序?qū)嵗a

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python對(duì)輸出的奇數(shù)偶數(shù)排序?qū)嵗a內(nèi)容,有興趣的朋友們可以參考下。
    2020-12-12
  • 使用Python實(shí)現(xiàn)一鍵隱藏屏幕并鎖定輸入

    使用Python實(shí)現(xiàn)一鍵隱藏屏幕并鎖定輸入

    本文主要介紹了使用 Python 編寫一個(gè)一鍵隱藏屏幕并鎖定輸入的黑科技程序,能夠在指定熱鍵觸發(fā)后立即遮擋屏幕,并禁止一切鍵盤鼠標(biāo)輸入,這樣就再也不用擔(dān)心自己的屏幕被人偷看啦
    2025-04-04
  • python3 實(shí)現(xiàn)自定義切片類為左閉右閉詳情

    python3 實(shí)現(xiàn)自定義切片類為左閉右閉詳情

    這篇文章主要介紹了python3 實(shí)現(xiàn)自定義切片類為左閉右閉詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2021-12-12
  • 深入詳解Python中動(dòng)態(tài)方法調(diào)用的各種方法

    深入詳解Python中動(dòng)態(tài)方法調(diào)用的各種方法

    在Python編程中,我們經(jīng)常會(huì)遇到需要根據(jù)??運(yùn)行時(shí)條件??動(dòng)態(tài)調(diào)用對(duì)象方法的場(chǎng)景,本文將深入探討Python中動(dòng)態(tài)方法調(diào)用的各種技術(shù),感興趣的小伙伴可以了解下
    2025-10-10

最新評(píng)論

镇沅| 中西区| 平安县| 新竹县| 广南县| 公安县| 马公市| 普陀区| 江都市| 德州市| 双江| 福州市| 綦江县| 方正县| 泊头市| 凌海市| 外汇| 宁河县| 昌平区| 横山县| 韶山市| 全南县| 通化县| 苗栗县| 黔西县| 安远县| 古交市| 海阳市| 栾城县| 闽清县| 共和县| 萝北县| 达孜县| 阿拉善右旗| 荆州市| 类乌齐县| 谢通门县| 周宁县| 陕西省| 竹溪县| 渭南市|