码迷,mamicode.com
首页 > 编程语言 > 详细

Python之路——hashlib模块

时间:2018-01-29 15:40:21      阅读:194      评论:0      收藏:0      [点我收藏+]

标签: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 line
13 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             return
17     with open(userinfo,a,encoding=utf-8) as f:
18         f.write(%s|%s|%s\n%(name,get_mad5(pwd),role))
19         return True
20 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(b123456)
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 hashlib
11 # import os
12 # 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)  # 43d62b60d0bb6b4710d9d2b727a8f23b
22 # print(‘43d62b60d0bb6b4710d9d2b727a8f23b‘==‘43d62b60d0bb6b4710d9d2b727a8f23b‘)

 

Python之路——hashlib模块

标签:class   gets   不同   ret   lis   put   range   read   port   

原文地址:https://www.cnblogs.com/liuyankui163/p/8336493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!