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
如果想要得到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())
得到两个md5值相同,是一个文件
2.给密码加密
import hashlib # 导入模块
password = input("请输入密码:").strip()
m = hashlib.md5() # 造一个生产md5的工厂
m.update(password.encode("utf-8"))
print(m.hexdigest())
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())