2024年Python教程:hashlib和hmac模块

这个模块针对不同的安全哈希和消息摘要算法实现了一个通用的接口。该算法接收传入的内容,经过运算得到一串hash值

此模块中总是可用的哈希算法构造器有md5, sha1(), sha224(), sha256(), sha384(), sha512(), blake2b() 和 blake2s()。

hash值的特点

1、只要传入的内容一样,得到的hash值必然一样=========>>文件传输完整性校验。

2、不能由hash值反解成内容==========>> 把密码做成hash值,不应该在网络传输明文密码。

3、只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的。

hashlib的使用

注:向 update() 输入字符串对象是不被支持的,因为哈希基于字节而非字符。

update()可多次传值,与一次update这段长数据,得到的结果一样,但是update多次为校验大文件提供了可能。

import hashlib

m = hashlib.md5()

m.update(b’abc’)

m.update(‘李白’.encode(‘utf-8’))

print(m.hexdigest())

ddfe8b4099dee5a307bd8d72b5408332

简要写法

print(hashlib.md5(‘abc李白’.encode()).hexdigest())

ddfe8b4099dee5a307bd8d72b5408332

撞库

撞库是通过已有的大量密码进行hash运算得到hash值,将截获到的密码秘文与已有的hash值进行比对。

‘’’

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

‘’’

import hashlib

已有密码

password_list = [

“RuGxM62EgW”,

“rx3Nmu59oV”,

“eIgdXq6B4N”,

“75dY890jAA”,

“5yy4GJvTu0”,

“1BB775rZDU”,

“MTlmcz2kmL”,

“vN7MZ71FbL”,

]

class Hit_The_Library:

将已有密码文件生成密码字典,key是明文密码,value是秘文

def get_password_dict(self, password_list):

self.password_dict = {}

m = hashlib.md5()

for i in password_list:

m.update(i.encode(‘utf-8’))

self.password_dict[i] = m.hexdigest()

return self.password_dict

破解

def brute_force(self, private_password):

for k, v in self.password_dict.items():

if v == private_password:

return f’明文密码为:{k}\n密文密码为:{v}’

hit = Hit_The_Library()

hit.get_password_dict(password_list)

print(hit.brute_force(“a191f8c8408c5a90fd970a02d0a3b52a”))

明文密码为:MTlmcz2kmL

密文密码为:a191f8c8408c5a90fd970a02d0a3b52a

密码加盐

对于私密信息不能直接以明文传输,比如密码,应该将之加密后传输。为防止数据包被截获后通过撞库而破解,可在密码内掺入其他内容。

import hashlib

m = hashlib.sha512()

m.update(‘首部添加的内容’.encode(‘utf-8’))

m.update(‘password’.encode(‘utf-8’))

m.update(‘尾部添加的内容’.encode(‘utf-8’))

print(m.hexdigset())

文件校验

1、校验全部内容,如果文件过大耗时会比较长。

‘’’

遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值