国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python模塊分析:第2節-hashlib加密模塊

WalkerXu / 2400人閱讀

摘要:上一篇文章模塊分析第節模塊下一篇文章模塊分析第節模塊模塊是用來對字符串進行加密的模塊,明文與密文是一一對應不變的關系用于注冊登錄時用戶名密碼等加密使用。一函數分析共有種加密算法,分別得到不同的加密密文。

上一篇文章:Python模塊分析:第1節-random模塊
下一篇文章:Python模塊分析:第3節-typing模塊

hashlib模塊是用來對字符串進行hash加密的模塊,明文與密文是一一對應不變的關系;用于注冊、登錄時用戶名、密碼等加密使用。

一、函數分析
1、共有5種加密算法

md5(),sha1(),sha224(),sha256(),sha3840(),sha512(),分別得到不同的加密密文。

2、hashlib.hexdigest():獲取加密的密文,16進制,無參數
3、hashlib.digest():獲取加密的密文,二進制,無參數
4、hashlib.copy():復制一份當前創建的hash對象,無參數
5、update(str1,encoding("utf-8"")):更新加密的密文,得到的密文與原來的密文不相同
6、hash.name:查看當前獲得的hash對象的加密算法
7、hash.digest_size:hash密鑰占多少個字節
8、hash.block_size:hash數據塊的大小
9、hashlib.algorithms_guaranteed:查看所有平臺都支持的hash算法
10、hashlib.algorithms_available:查看所有的hash加密算法

代碼實例:

import hashlib

def hash_fun_1(str1):
    #創建一個hahsh對象并對str1加密
    m=hashlib.md5(str1.encode("utf-8"))
    print("獲取加密的密文,16進制,無參數",m.hexdigest())
    print("獲取加密的密文,二進制,無參數:",m.digest())
    print("獲取hash塊的大小:",m.block_size)
    print("hash密鑰占多少個字節:",m.digest_size)
    print("查看當前獲得的hash對象的加密算法",m.name)

    #更新密文
    m.update(str1.encode("utf-8"))
    print("獲取加密的密文,16進制,無參數", m.hexdigest())
    print("獲取加密的密文,二進制,無參數:", m.digest())
    print("獲取hash塊的大小:", m.block_size)
    print("hash密鑰占多少個字節:", m.digest_size)
    print("查看當前獲得的hash對象的加密算法", m.name)

if __name__ == "__main__":
    hash_fun_1("mark")

結果:

獲取加密的密文,16進制,無參數 ea82410c7a9991816b5eeeebe195e20a
獲取加密的密文,二進制,無參數: b"xeax82Ax0czx99x91x81k^xeexebxe1x95xe2
"
獲取hash塊的大小: 64
hash密鑰占多少個字節: 16
查看當前獲得的hash對象的加密算法 md5
獲取加密的密文,16進制,無參數 ac673f4dbac79922838901b5974a419a
獲取加密的密文,二進制,無參數: b"xacg?Mxbaxc7x99"x83x89x01xb5x97JAx9a"
獲取hash塊的大小: 64
hash密鑰占多少個字節: 16
查看當前獲得的hash對象的加密算法 md5
二、運用:
1、創建哈希對象,有兩種方式:
m=hashlib.new("md5",b"cai")#選擇md5加密函數加密字符串‘cai’
m=hashlib.md5("cai".encode("utf-8"))#加密的另一種寫法
2、特性用法:當需要加密的字符串過大的時候,可以使用同一個hash對象分多次加密,update(a)+update(b)=update(a+b)

舉例:

import hashlib

m1=hashlib.md5()
m2=m1.copy()
m1.update("a".encode("utf-8"))
m1.update("b".encode("utf-8"))
print(m1.hexdigest())#輸出密文
m2.update("ab".encode("utf-8"))
print(m2.hexdigest())#輸出另一個密文

運行結果:

187ef4436122d1cc2f40dc2b92f0eba0
187ef4436122d1cc2f40dc2b92f0eba0
三、hash算法加密

加密算法得到的密文不可逆,但是密文與明文之間的關系是一一對應的,這就使得解密出現了可能,使用大數據存儲密文與明文對用關系,如果數據庫內剛好有對應的密文,就可以找到明文完成解密,常用的解密網站:http://www.cmd5.com/,通過輸入密文查找對于的明文。

為了增大破解的難度,一般需要對密碼進行多次迭代加密,hashlib模塊有一個專門的函數。

代碼實例:

import hashlib
import binascii

#sha256為算法名稱,12345678為要加密的密碼
#mark指的是雜質,額外添加的東西,使得破解更難
#10 000是迭代次數,可以理解為加密次數
pwd=hashlib.pbkdf2_hmac("sha256",b"12345678",b"mark",10000)
print(binascii.hexlify(pwd).decode("utf-8"))

結果:

129d11e9ba1f3ef4e1393516d434f356363ffe68d7baca37fd1e91f0e87abe36
上一篇文章:Python模塊分析:第1節-random模塊
下一篇文章:Python模塊分析:第3節-typing模塊

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42643.html

相關文章

  • Python模塊分析3-typing模塊

    摘要:代碼實例運行結果跟不用無異上一篇文章模塊分析第節加密模塊下一篇文章模塊分析第節日志模塊 上一篇文章:Python模塊分析:第2節-hashlib加密模塊下一篇文章:Python模塊分析:第4節-logging日志模塊 Python是一門弱類型的語言,很多時候我們可能不清楚函數參數類型或者返回值類型,很有可能導致一些類型沒有指定方法,typing模塊可以很好的解決這個問題。 該模塊加入...

    wujl596 評論0 收藏0
  • Python模塊分析1-random模塊

    摘要:下一篇文章模塊分析第節加密模塊是產生偽隨機數的模塊,隨機種子默認為系統時鐘。核心源碼時間復雜度實例結果下一篇文章模塊分析第節加密模塊 下一篇文章:Python模塊分析:第2節-hashlib加密模塊 random是Python產生偽隨機數的模塊,隨機種子默認為系統時鐘。下面分析模塊中的方法: 1、random.randint(start,stop) 這是一個產生整數隨機數的函數,參數...

    philadelphia 評論0 收藏0
  • Python常用模塊hashlib模塊——簡單實現實現登錄注冊

    摘要:唯一要求使用中的進行加密請輸入你的賬號請輸入你的密碼加鹽操作加密加密輸入正確輸入錯誤請輸入你要注冊的名字請輸入你要注冊的密碼加密加密請輸入你要執行的操作注冊登錄退出問題是 ...

    番茄西紅柿 評論0 收藏2637
  • Python中MD5加密

    摘要:的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被壓縮成一種保密的格式就是把一個任意長度的字節串變換成一定長的十六進制數字串。獲取由位隨機大小寫字母數字組成的值每次從中隨機取一位獲取原始密碼的值原始密碼隨機生成位加密后的密碼 MD5是什么 下面的概念是百度百科的: Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計算機安全領域廣泛使用的一種散列...

    chadLi 評論0 收藏0
  • python模塊hashlib

    摘要:使用算法名稱構造函數較使用更快所有平臺的模塊都支持的算法的名稱集合。的結果集總是結果集的子集對象的字節長度對象的內部塊大小對象的名稱傳遞類字節參數通常是更新對象。表示的哈希摘要算法的名稱,比如或。表示迭代次數,基于算法以及機器計算能力設置。 hashlib模塊實現了多種安全哈希和信息摘要算法的通用接口,包括FIPS中定義的SHA1, SHA224, SHA256, SHA384, SH...

    luodongseu 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<