md5签名 python_python学习笔记------hash

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

如果想要得到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

f528ba75b1db7cad6208b7db6582d0ae.png

得到两个md5值相同,是一个文件

2.给密码加密

import hashlib  # 导入模块
password = input("请输入密码:").strip()
m = hashlib.md5()  # 造一个生产md5的工厂
m.update(password.encode("utf-8"))
print(m.hexdigest())

85163cc5baa5bccad2bdbdf6c7a4bab9.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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值