Python之路——hashlib模块

Posted liuyankui163

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之路——hashlib模块相关的知识,希望对你有一定的参考价值。

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模块的主要内容,如果未能解决你的问题,请参考以下文章

Python 学习之路 - 反射,hashlib

Python学习之路--模块2

python之路:Day05 --- 常用模块

python学习之路

Python 之路 Day06 模块

python学习之路-day5