Python之路——hashlib模組

來源:互聯網
上載者:User

標籤:class   gets   不同   ret   lis   put   range   read   port   

hashlib提供摘要演算法的模組
 1 import hashlib 2 def get_mad5(s): 3     md5 = hashlib.md5() 4     md5.update(bytes(s,encoding=‘utf-8‘)) 5     md5_pwd = md5.hexdigest() 6     return md5_pwd 7 def get_user_list(filename=‘userinfo‘): 8     u_lst = [] 9     with open(filename,‘r‘,encoding=‘utf-8‘) as f:10         for line in f:11             line = line.strip().split(‘|‘)12             yield line13 def save_user(name,pwd,role):14     for line in get_user_list():15         if name == line[0] and get_mad5(pwd)==line[1]:16             return17     with open(‘userinfo‘,‘a‘,encoding=‘utf-8‘) as f:18         f.write(‘%s|%s|%s\n‘%(name,get_mad5(pwd),role))19         return True20 while True:21     usr = input(‘username:‘).strip()22     pwd = input(‘password:‘).strip()23     role = input(‘role:‘).strip()24     if save_user(usr,pwd,role):25         print(‘success‘)26     else:print(‘發生錯誤‘)

不管演算法多麼不同,摘要的功能始終不變
對於相同的字串使用同一個演算法進行摘要,得到的值總是不變的
使用不同演算法對相同的字串進行摘要,得到的值應該不同
不管使用什麼演算法,hashlib的方式永遠不變

sha 演算法 隨著 演算法複雜程度的增加 摘要的時間成本空間成本都會增加

 

摘要演算法應用

密碼的密文儲存
檔案的一致性驗證
  在下載的時候 檢查我們下載的檔案和遠程伺服器上的檔案是否一致
  兩台機器上的兩個檔案 你想檢查這兩個檔案是否相等

 

加鹽
1 import hashlib   # 提供摘要演算法的模組2 md5 = hashlib.md5(bytes(‘鹽‘,encoding=‘utf-8‘))3 # md5 = hashlib.md5()4 md5.update(b‘123456‘)5 print(md5.hexdigest())  # 970d52d48082f3fb0c59d5611d25ec1e
 計算一個檔案的md5值
 1 # import hashlib 2 # f = open(‘myfile‘,‘rb‘) 3 # md5 = hashlib.md5() 4 # md5.update(f.read()) 5 # md5 = md5.hexdigest() 6 # f.close() 7 # print(md5)  # 43d62b60d0bb6b4710d9d2b727a8f23b 8  9 10 # import hashlib11 # import os12 # file_size = os.path.getsize(‘myfile‘)13 # a,b=divmod(file_size,1024)14 # md5 = hashlib.md5()15 # f = open(‘myfile‘,‘rb‘)16 # for i in range(a):17 #     md5.update(f.read(1024))18 # md5.update(f.read(b))19 # f.close()20 # md5 = md5.hexdigest()21 # print(md5)  # 43d62b60d0bb6b4710d9d2b727a8f23b22 # print(‘43d62b60d0bb6b4710d9d2b727a8f23b‘==‘43d62b60d0bb6b4710d9d2b727a8f23b‘)

 

Python之路——hashlib模組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.