摘要:上一篇文章模塊分析第節(jié)模塊下一篇文章模塊分析第節(jié)模塊模塊是用來對字符串進(jìn)行加密的模塊,明文與密文是一一對應(yīng)不變的關(guān)系用于注冊登錄時(shí)用戶名密碼等加密使用。一函數(shù)分析共有種加密算法,分別得到不同的加密密文。
上一篇文章:Python模塊分析:第1節(jié)-random模塊
下一篇文章:Python模塊分析:第3節(jié)-typing模塊
hashlib模塊是用來對字符串進(jìn)行hash加密的模塊,明文與密文是一一對應(yīng)不變的關(guān)系;用于注冊、登錄時(shí)用戶名、密碼等加密使用。
一、函數(shù)分析md5(),sha1(),sha224(),sha256(),sha3840(),sha512(),分別得到不同的加密密文。
代碼實(shí)例:
import hashlib def hash_fun_1(str1): #創(chuàng)建一個(gè)hahsh對象并對str1加密 m=hashlib.md5(str1.encode("utf-8")) print("獲取加密的密文,16進(jìn)制,無參數(shù)",m.hexdigest()) print("獲取加密的密文,二進(jìn)制,無參數(shù):",m.digest()) print("獲取hash塊的大小:",m.block_size) print("hash密鑰占多少個(gè)字節(jié):",m.digest_size) print("查看當(dāng)前獲得的hash對象的加密算法",m.name) #更新密文 m.update(str1.encode("utf-8")) print("獲取加密的密文,16進(jìn)制,無參數(shù)", m.hexdigest()) print("獲取加密的密文,二進(jìn)制,無參數(shù):", m.digest()) print("獲取hash塊的大小:", m.block_size) print("hash密鑰占多少個(gè)字節(jié):", m.digest_size) print("查看當(dāng)前獲得的hash對象的加密算法", m.name) if __name__ == "__main__": hash_fun_1("mark")
結(jié)果:
獲取加密的密文,16進(jìn)制,無參數(shù) ea82410c7a9991816b5eeeebe195e20a 獲取加密的密文,二進(jìn)制,無參數(shù): b"xeax82Ax0czx99x91x81k^xeexebxe1x95xe2 " 獲取hash塊的大小: 64 hash密鑰占多少個(gè)字節(jié): 16 查看當(dāng)前獲得的hash對象的加密算法 md5 獲取加密的密文,16進(jìn)制,無參數(shù) ac673f4dbac79922838901b5974a419a 獲取加密的密文,二進(jìn)制,無參數(shù): b"xacg?Mxbaxc7x99"x83x89x01xb5x97JAx9a" 獲取hash塊的大小: 64 hash密鑰占多少個(gè)字節(jié): 16 查看當(dāng)前獲得的hash對象的加密算法 md5二、運(yùn)用:
m=hashlib.new("md5",b"cai")#選擇md5加密函數(shù)加密字符串‘cai’ m=hashlib.md5("cai".encode("utf-8"))#加密的另一種寫法
舉例:
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())#輸出另一個(gè)密文
運(yùn)行結(jié)果:
187ef4436122d1cc2f40dc2b92f0eba0 187ef4436122d1cc2f40dc2b92f0eba0三、hash算法加密
加密算法得到的密文不可逆,但是密文與明文之間的關(guān)系是一一對應(yīng)的,這就使得解密出現(xiàn)了可能,使用大數(shù)據(jù)存儲(chǔ)密文與明文對用關(guān)系,如果數(shù)據(jù)庫內(nèi)剛好有對應(yīng)的密文,就可以找到明文完成解密,常用的解密網(wǎng)站:http://www.cmd5.com/,通過輸入密文查找對于的明文。
為了增大破解的難度,一般需要對密碼進(jìn)行多次迭代加密,hashlib模塊有一個(gè)專門的函數(shù)。
代碼實(shí)例:
import hashlib import binascii #sha256為算法名稱,12345678為要加密的密碼 #mark指的是雜質(zhì),額外添加的東西,使得破解更難 #10 000是迭代次數(shù),可以理解為加密次數(shù) pwd=hashlib.pbkdf2_hmac("sha256",b"12345678",b"mark",10000) print(binascii.hexlify(pwd).decode("utf-8"))
結(jié)果:
129d11e9ba1f3ef4e1393516d434f356363ffe68d7baca37fd1e91f0e87abe36
上一篇文章:Python模塊分析:第1節(jié)-random模塊
下一篇文章:Python模塊分析:第3節(jié)-typing模塊
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42643.html
摘要:代碼實(shí)例運(yùn)行結(jié)果跟不用無異上一篇文章模塊分析第節(jié)加密模塊下一篇文章模塊分析第節(jié)日志模塊 上一篇文章:Python模塊分析:第2節(jié)-hashlib加密模塊下一篇文章:Python模塊分析:第4節(jié)-logging日志模塊 Python是一門弱類型的語言,很多時(shí)候我們可能不清楚函數(shù)參數(shù)類型或者返回值類型,很有可能導(dǎo)致一些類型沒有指定方法,typing模塊可以很好的解決這個(gè)問題。 該模塊加入...
摘要:下一篇文章模塊分析第節(jié)加密模塊是產(chǎn)生偽隨機(jī)數(shù)的模塊,隨機(jī)種子默認(rèn)為系統(tǒng)時(shí)鐘。核心源碼時(shí)間復(fù)雜度實(shí)例結(jié)果下一篇文章模塊分析第節(jié)加密模塊 下一篇文章:Python模塊分析:第2節(jié)-hashlib加密模塊 random是Python產(chǎn)生偽隨機(jī)數(shù)的模塊,隨機(jī)種子默認(rèn)為系統(tǒng)時(shí)鐘。下面分析模塊中的方法: 1、random.randint(start,stop) 這是一個(gè)產(chǎn)生整數(shù)隨機(jī)數(shù)的函數(shù),參數(shù)...
摘要:唯一要求使用中的進(jìn)行加密請輸入你的賬號(hào)請輸入你的密碼加鹽操作加密加密輸入正確輸入錯(cuò)誤請輸入你要注冊的名字請輸入你要注冊的密碼加密加密請輸入你要執(zhí)行的操作注冊登錄退出問題是 ...
摘要:的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被壓縮成一種保密的格式就是把一個(gè)任意長度的字節(jié)串變換成一定長的十六進(jìn)制數(shù)字串。獲取由位隨機(jī)大小寫字母數(shù)字組成的值每次從中隨機(jī)取一位獲取原始密碼的值原始密碼隨機(jī)生成位加密后的密碼 MD5是什么 下面的概念是百度百科的: Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列...
摘要:使用算法名稱構(gòu)造函數(shù)較使用更快所有平臺(tái)的模塊都支持的算法的名稱集合。的結(jié)果集總是結(jié)果集的子集對象的字節(jié)長度對象的內(nèi)部塊大小對象的名稱傳遞類字節(jié)參數(shù)通常是更新對象。表示的哈希摘要算法的名稱,比如或。表示迭代次數(shù),基于算法以及機(jī)器計(jì)算能力設(shè)置。 hashlib模塊實(shí)現(xiàn)了多種安全哈希和信息摘要算法的通用接口,包括FIPS中定義的SHA1, SHA224, SHA256, SHA384, SH...
閱讀 1031·2021-10-19 11:42
閱讀 2984·2021-09-10 10:51
閱讀 692·2021-09-09 09:33
閱讀 1772·2021-09-01 10:43
閱讀 2782·2019-08-30 12:43
閱讀 3529·2019-08-30 11:24
閱讀 2133·2019-08-30 10:56
閱讀 2786·2019-08-29 11:00