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

Python?hashlib模塊詳情

 更新時間:2021年11月30日 10:33:21   作者:盆友圈的小可愛  
本文,我們來對Python?提供的安全哈希算法的通用接口-hashlib模塊進(jìn)行學(xué)習(xí),文章內(nèi)容具有一定的參考價值,需要的小伙伴可以參考一下

前言:

在互聯(lián)網(wǎng)的時代,我們在網(wǎng)絡(luò)中傳輸過程中都是要經(jīng)過加密的,常見網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募用芊绞接?code>MD5和RSA算法。當(dāng)然,加密算法還有很多中按加密、解密方式不同分為:對稱加密、非對稱加密hash加密。其中MD5算法的基礎(chǔ)是使用的hash算法,針對不同安全的hash安全算法,Python也提一個通用接口hashlib模塊。

1. hashlib 模塊概述

hashlibPython 內(nèi)置用于對安全哈希和消息摘要的通用接口模塊。hashlib 模塊支持提供目前主流hash算法如MD5、SHA-1、SHA-2SHA-256等通用構(gòu)造方法,并且返回帶有同樣接口的hash對象。

1.1hashlib 模塊特點(diǎn)

  • 提供主流的hash算法操作,替代md5模塊和sha模塊
  • 模塊調(diào)用簡單,無需下載安裝
  • 主要應(yīng)用在文本加密場景如用戶登錄認(rèn)證

1.2hashlib 模塊使用步驟

  • 導(dǎo)入hashlib庫import hashlib
  • 建立加密對象
  • 對字符串進(jìn)行加密處理
  • 獲取轉(zhuǎn)換成新的N個Bit

2. hashlib 工作原理

hashlib 模塊中加密方式是我們常見的hash算法。hash算法又稱為散列表(hash table),也叫做哈希表。

2.1hash 算法特點(diǎn)

  • 具有唯一確定性,不同字符串加密后都是不一樣的
  • 不可逆性,hash只有加密沒有解密過程
  • 散列碰撞,輸出和輸入值不是一一對應(yīng)關(guān)系

2.2hash 構(gòu)造方法

直接定址方法

  • 公式一:hash(key) = key
  • 公式二:hash(key) = a*key+b
  • 我們可以查看到直接定址方法具有線性的特點(diǎn),因此適用在關(guān)鍵字分布連續(xù)的情況

數(shù)學(xué)分析方法

  • 方式:提取關(guān)鍵字中隨機(jī)性好的數(shù)字位,將其拼接為哈希地址
  • 適用場景:關(guān)鍵字已知的情況下,對關(guān)鍵字中每一位進(jìn)行取值情況分析

除留余數(shù)方法

  • 公式hash(key) = key % p
  • 除數(shù)采用取余模運(yùn)算

2.3hash 算法過程

  • hash 函數(shù)接收到輸入的字符串,首先會先進(jìn)行預(yù)處理-哈希計算-輸入摘要
  • 預(yù)處理:將字符串進(jìn)行填充、分割N塊,為hash進(jìn)行初始化
  • 哈希計算:將預(yù)處理的數(shù)據(jù)完成指定算法生成消息摘要
  • 每指定一種hash算法只會生成固定長度的摘要,長度越長的安全性越高

2.4hash 常用算法

MD5

MD5:message-Digest Algorithm 5 信息-摘要算法5,該算法用于信息完整性進(jìn)行校驗(yàn)

  • 計算方式:求余、取余、調(diào)整長度、進(jìn)行鏈接變量循環(huán)運(yùn)算求出結(jié)果
  • 用途:主要用于文件校驗(yàn)

SHA-1

SHA:secure Hash Algorithm 安全散列算法1,是一種密碼散列算法,SHA-1可以生成摘要消息為40位的16進(jìn)制即160位(20字節(jié))的散列值

  • 用途:TSL、SSL、PGP、SSH等協(xié)議中廣泛使用

3. hashlib 屬性方法

hashlib 模塊相關(guān)屬性

屬性 作用
hashlib.algorithms_guaranteed 保證所有平臺上都支持哈希算法的名稱
hashlib.algorithms_available 保證平臺上運(yùn)行的Python解釋器上可用的hash算法的名稱

hashlib 構(gòu)造對象相關(guān)的屬性

屬性 作用
hash.digest_size 以字節(jié)表示哈希對象的大小
hash.block_size 以字節(jié)表示哈希算法的內(nèi)部塊大小
hash.name 哈希對象的名稱

hashlib 模塊相關(guān)方法目前可以支持主流hash算法。

方法 作用
hashlib.pbkdf2_hmac(hash_name,password,salt,itera,dklen=None) PKCS#5基于密碼的秘鑰派生函數(shù)2,作為HMAC作為偽隨機(jī)函數(shù)
hashlib.scrypt(password,*,salt) 基于密碼加密的秘鑰派生函數(shù)
hashlib.md5() md5加密方式
hashlib.sha1 sha1加密方式
hashlib.sha256 sha256加密方式
hashlib.blake2b () blake2b加密方式
hashlib.blake2s black2s加密方式

hashlib 構(gòu)造對象相關(guān)的方法

方法 作用
hash.update(data) 以字節(jié)表示哈希對象
hash.digest() 返回當(dāng)前已傳給update()方法的數(shù)據(jù)摘要
hash.hexdigest() 以16進(jìn)制的字符串表示哈希數(shù)據(jù)值
hash.copy() 將hash對象復(fù)制,共享初始數(shù)據(jù)的摘要

4. 實(shí)操

我們學(xué)習(xí)hashlib模塊中對字符串進(jìn)行hash算法處理,我們來實(shí)操一下吧

import hashlib

text_md5 = hashlib.md5()

text_md5.update(bytes("hello juejing",encoding="utf-8"))

print("md5:",text_md5.hexdigest())

text_sha1 = hashlib.sha1()

text_sha1.update(bytes("hello juejing",encoding="utf-8"))

print("sha1:",text_sha1.hexdigest())



text_sha256 = hashlib.sha3_256()

text_sha256.update(bytes("hello juejing",encoding="utf-8"))

print("sha256:",text_sha256.hexdigest())



text_crc32 = hashlib.()

text_sha256.update(bytes("hello juejing",encoding="utf-8"))

print("sha256:",text_sha256.hexdigest())

?? 重要說明

  • 添加自定義key與字符串進(jìn)行組合加密(加鹽)
  • 以MD5加密為例如下

加鹽寫法一:

text_md5 = hashlib.md5(b"key")

text_md5.update("字符串".encode("utf-8")) 

加鹽寫法二:

key = "字符串"

yan = "字符串2"

text_md5 = hashlib.md5()

text_md5.upadte((key+yan).encode("utf-8"))

5、總結(jié)

本期,我們對hashlib模塊中hash算法特點(diǎn)、hashlib模塊相關(guān)支出算法的方法進(jìn)行學(xué)習(xí)和實(shí)操。在hash算法中我們常用使用md5/sha1/sha256主要用于文本校驗(yàn)、用戶登錄認(rèn)證等數(shù)據(jù)校驗(yàn)同時,hash算法確保數(shù)據(jù)的完整性,具有不可逆性,同時它會遭遇到暴力碰撞,因此hash長度越長的安全性也越高。

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

相關(guān)文章

  • Python中is和==的區(qū)別詳解

    Python中is和==的區(qū)別詳解

    這篇文章主要介紹了Python中is和==的區(qū)別詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Python使用Pandas處理測試數(shù)據(jù)的方法

    Python使用Pandas處理測試數(shù)據(jù)的方法

    Pandas是一個功能極其強(qiáng)大的數(shù)據(jù)分析庫,可以高效地操作各種數(shù)據(jù)集,這篇文章主要介紹了Python自動化測試-使用Pandas來高效處理測試數(shù)據(jù),需要的朋友可以參考下
    2023-02-02
  • 淺談python連續(xù)賦值可能引發(fā)的錯誤

    淺談python連續(xù)賦值可能引發(fā)的錯誤

    今天小編就為大家分享一篇淺談python連續(xù)賦值可能引發(fā)的錯誤,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 五分鐘學(xué)會怎么用Pygame做一個簡單的貪吃蛇

    五分鐘學(xué)會怎么用Pygame做一個簡單的貪吃蛇

    這篇文章主要介紹了五分鐘學(xué)會怎么用Pygame做一個簡單的貪吃蛇,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • 使用OpenCV實(shí)現(xiàn)迷宮解密的全過程

    使用OpenCV實(shí)現(xiàn)迷宮解密的全過程

    同學(xué)發(fā)了我張迷宮圖片,讓我走迷宮來緩解暴躁,于是乎就碼了一個程序出來,下面這篇文章主要給大家介紹了關(guān)于使用OpenCV實(shí)現(xiàn)迷宮解密的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Python中pip工具的安裝以及使用

    Python中pip工具的安裝以及使用

    今天給大家?guī)黻P(guān)于Python的相關(guān)知識,文章圍繞著pip工具的安裝以及使用展開,文中有非常詳細(xì)的圖文示例及介紹,需要的朋友可以參考下
    2021-06-06
  • Python實(shí)現(xiàn)拼接多張圖片的方法

    Python實(shí)現(xiàn)拼接多張圖片的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)拼接多張圖片的方法,以具體的實(shí)際應(yīng)用引出Python拼接圖片的思路并給出了實(shí)現(xiàn)的具體方法,需要的朋友可以參考下
    2014-12-12
  • python之import機(jī)制詳解

    python之import機(jī)制詳解

    這篇文章主要介紹了python的import機(jī)制,需要的朋友可以參考下
    2014-07-07
  • python 列表元素左右循環(huán)移動 的多種解決方案

    python 列表元素左右循環(huán)移動 的多種解決方案

    這篇文章主要介紹了python 列表元素左右循環(huán)移動 的多種解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python基礎(chǔ)入門之字典和集合

    python基礎(chǔ)入門之字典和集合

    Python中的字典和集合是非常相似的數(shù)據(jù)類型,字典是無序的鍵值對。集合中的數(shù)據(jù)是不重復(fù)的,并且不能通過索引去修改集合中的值,我們可以往集合中新增或者修改數(shù)據(jù)。集合是無序的,并且支持?jǐn)?shù)學(xué)中的集合運(yùn)算,例如并集和交集等。
    2021-06-06

最新評論

连城县| 胶南市| 临湘市| 浪卡子县| 萍乡市| 东兴市| 开封县| 荆门市| 武宁县| 孟州市| 天全县| 枣阳市| 如东县| 和硕县| 白玉县| 开封县| 甘肃省| 招远市| 成安县| 彭州市| 北票市| 新兴县| SHOW| 类乌齐县| 五华县| 屏东县| 邵东县| 法库县| 垦利县| 县级市| 大化| 葫芦岛市| 武定县| 武山县| 马鞍山市| 肇庆市| 通榆县| 安福县| 祁阳县| 綦江县| 鄢陵县|