11-19 hashlib模組
阿新 • • 發佈:2018-11-19
Python的hashlib提供了常見的摘要演算法,如MD5,SHA1等等。
什麼是摘要演算法呢?
摘要演算法又稱雜湊演算法、雜湊演算法。它通過一個函式,把任意長度的資料轉換為一個長度固定的資料串(通常用16進位制的字串表示)。
摘要演算法就是通過摘要函式f()對任意長度的資料data計算出固定長度的摘要digest,目的是為了發現原始資料是否被人篡改過。
摘要演算法之所以能指出資料是否被篡改過,就是因為摘要函式是一個單向函式,計算f(data)很容易,但通過digest反推data卻非常困難。而且,對原始資料做一個bit的修改,都會導致計算出的摘要完全不同。
sha 演算法 隨著演算法複製程度成都的增加,摘要的時間和成本空間都會增加
摘要演算法的作用
1、密碼的密文儲存
2、檔案的一致性驗證
在下載的時候,檢查我們下載的檔案和遠端伺服器上的檔案是否一致
兩臺機器上的兩個檔案,你想檢查這兩個檔案是否相等
摘要演算法:包括一堆演算法 import hashlib #提供摘要演算法的模組 md5 = hashlib.md5() #使用了md5演算法 md5 = hashlib.sha1() #使用了sha1演算法 md5.update(b'alex3714') #aee949757a2e698417463d47acac93df print(md5.hexdigest()) 說明: 不管演算法多麼不同,摘要的功能始終不變 對於相同的字串,使用同一個演算法進行摘要,得到的值總是不變的 對於相同的字串,使用不同的演算法進行摘要,得到的值應該不同 不管使用什麼演算法,hashlib的方式永遠不變
例子:
#使用者登入-----(用\n作為分隔符,容易出錯,因為下面是以line來遍歷的) import hashlib usename = input('輸入名字:') password = input('輸入密碼:') md5 = hashlib.md5() #生成加密串,其中 password 是要加密的字串 md5.update(b'password') #獲取加密串 get_psd = md5.hexdigest() with open('userinfo','w') as f: f.write(usename+'|') f.write(get_psd) f.close() #使用者登入 import hashlib usename = input('輸入名字:') password = input('輸入密碼:') md5 = hashlib.md5() #生成加密串,其中 password 是要加密的字串 md5.update(b'password') #獲取加密串 getnew_psd = md5.hexdigest() print(getnew_psd) with open('userinfo') as f: for line in f: user,psd = line.split('|') if usename ==user and getnew_psd == psd: print('登入成功!') else: print('登入失敗!') exit() f.close()