摘要:上一篇文章模塊分析第節模塊下一篇文章模塊分析第節模塊模塊是用來對字符串進行加密的模塊,明文與密文是一一對應不變的關系用于注冊登錄時用戶名密碼等加密使用。一函數分析共有種加密算法,分別得到不同的加密密文。
上一篇文章:Python模塊分析:第1節-random模塊
下一篇文章:Python模塊分析:第3節-typing模塊
hashlib模塊是用來對字符串進行hash加密的模塊,明文與密文是一一對應不變的關系;用于注冊、登錄時用戶名、密碼等加密使用。
一、函數分析md5(),sha1(),sha224(),sha256(),sha3840(),sha512(),分別得到不同的加密密文。
代碼實例:
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二、運用:
m=hashlib.new("md5",b"cai")#選擇md5加密函數加密字符串‘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())#輸出另一個密文
運行結果:
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模塊分析:第2節-hashlib加密模塊下一篇文章:Python模塊分析:第4節-logging日志模塊 Python是一門弱類型的語言,很多時候我們可能不清楚函數參數類型或者返回值類型,很有可能導致一些類型沒有指定方法,typing模塊可以很好的解決這個問題。 該模塊加入...
摘要:下一篇文章模塊分析第節加密模塊是產生偽隨機數的模塊,隨機種子默認為系統時鐘。核心源碼時間復雜度實例結果下一篇文章模塊分析第節加密模塊 下一篇文章:Python模塊分析:第2節-hashlib加密模塊 random是Python產生偽隨機數的模塊,隨機種子默認為系統時鐘。下面分析模塊中的方法: 1、random.randint(start,stop) 這是一個產生整數隨機數的函數,參數...
摘要:唯一要求使用中的進行加密請輸入你的賬號請輸入你的密碼加鹽操作加密加密輸入正確輸入錯誤請輸入你要注冊的名字請輸入你要注冊的密碼加密加密請輸入你要執行的操作注冊登錄退出問題是 ...
摘要:的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被壓縮成一種保密的格式就是把一個任意長度的字節串變換成一定長的十六進制數字串。獲取由位隨機大小寫字母數字組成的值每次從中隨機取一位獲取原始密碼的值原始密碼隨機生成位加密后的密碼 MD5是什么 下面的概念是百度百科的: Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計算機安全領域廣泛使用的一種散列...
摘要:使用算法名稱構造函數較使用更快所有平臺的模塊都支持的算法的名稱集合。的結果集總是結果集的子集對象的字節長度對象的內部塊大小對象的名稱傳遞類字節參數通常是更新對象。表示的哈希摘要算法的名稱,比如或。表示迭代次數,基于算法以及機器計算能力設置。 hashlib模塊實現了多種安全哈希和信息摘要算法的通用接口,包括FIPS中定義的SHA1, SHA224, SHA256, SHA384, SH...
閱讀 1015·2021-10-19 11:42
閱讀 2972·2021-09-10 10:51
閱讀 677·2021-09-09 09:33
閱讀 1760·2021-09-01 10:43
閱讀 2768·2019-08-30 12:43
閱讀 3516·2019-08-30 11:24
閱讀 2114·2019-08-30 10:56
閱讀 2777·2019-08-29 11:00