1.hash是什么?
hash是一类算法,该算法接收传入的内容,经过运算得到一串hash值
2.hash的作用
(1).错误校验
(2).文件检验
(3).数字签名
3.hash类型
有SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5等
4.hash值特点
1.只要传入的内容一样,得到的hash值必然一样(要用明文传输密码文件的完整性校验)
2.不能由hash值反解成内容(把密码做成hash值,不应该在网络上传输明文密码)
3.只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
5.hash在python中如何使用
在python中使用hash可以使用hashlib模块
import hashlib # 导入模块
m = hashlib.md5() # 造一个生产md5的工厂
m.update("hello".encode('utf-8')) # 将utf-8格式的hello传入工厂
print(m.hexdigest()) # 输出结果
上述可以得到一个32位的md5
![68d8bc0f7ac5176b75f11e623baab7dc.png](https://i-blog.csdnimg.cn/blog_migrate/3ba7de2bde17ef3db8c7e868b4dfab45.png)
如果想要得到16位md5就取中间16位,从第9位到24位
hash的应用场景
1.校验两个文件是否是一个
import hashlib # 导入模块
m = hashlib.md5() # 造一个生产md5的工厂
with open(r"E:test路飞学程作业打印一千张学员海报alex.png",'rb') as f:
for i in f:
m.update(i)
print(m.hexdigest())
import hashlib # 导入模块
m = hashlib.md5() # 造一个生产md5的工厂
with open(r"E:testaaalex.png",'rb') as f:
for i in f:
m.update(i)
print(m.hexdigest())
![73ace02a7459be70368ef40b388d42c4.png](https://i-blog.csdnimg.cn/blog_migrate/12574107628b9bcbfc551a99a49fca7e.png)
![f528ba75b1db7cad6208b7db6582d0ae.png](https://i-blog.csdnimg.cn/blog_migrate/2e1e22185010fa4a7212a14faed2f3f5.png)
得到两个md5值相同,是一个文件
2.给密码加密
import hashlib # 导入模块
password = input("请输入密码:").strip()
m = hashlib.md5() # 造一个生产md5的工厂
m.update(password.encode("utf-8"))
print(m.hexdigest())
![85163cc5baa5bccad2bdbdf6c7a4bab9.png](https://i-blog.csdnimg.cn/blog_migrate/56ab38c60bf1552b46e05acddc5f908b.png)
3.密码加盐(在密码中加字符,提高撞库成本)
import hashlib # 导入模块
password = input("请输入密码:").strip()
m = hashlib.md5() # 造一个生产md5的工厂
m.update("mm".encode("utf-8")) # 对面加盐,强化密码安全性
m.update(password.encode("utf-8"))
print(m.hexdigest())
![3d8ea6eb5c0a8913b8e65134e8906537.png](https://i-blog.csdnimg.cn/blog_migrate/2f6d7ddd99fe950fa3738b71deaac4e7.png)