hashlib 模块

本文详细介绍了哈希算法的基本概念及应用场景,包括密码的安全传输、文件完整性的校验等,并通过实例演示了如何使用Python的hashlib模块进行哈希计算,同时讨论了密码破解中的撞库攻击及密码加盐的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是哈希hash

#   该算法接受传入的内容,经过运算得到一串hash值
#   hash值的特点是:
#       只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
#       不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码
#       只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

2、hash的用途

# 用途1:特点II用于密码密文传输与验证
# 用途2:特点I、III用于文件完整性校验

3、如何用

import hashlib

m = hashlib.sha256()
m.update('hello'.encode('utf-8'))
m.update('world'.encode('utf-8'))
res = m.hexdigest()
print(res)  # 936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af


m = hashlib.sha256('he'.encode('utf-8'))
m.update('llo'.encode('utf-8'))
m.update('wor'.encode('utf-8'))
m.update('ld'.encode('utf-8'))
res = m.hexdigest()
print(res)  # 936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af

# 只要内容一样,hash值都一样

print(hashlib.sha256('helloworld'.encode('UTF-8')).hexdigest())  
# 936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af

撞库的方式破解加密密码

import hashlib

passwd='a42d9861eaba373b6d32977eaff32f12c408fe9620d998a1009f8996e2693ec6'  # xio0327 加密后的

# 制作密码字段
passwds = ['xio0327', '0327xio', 'x0327io', 'xi0327o', '03xio27']

dic = {}
for p in passwds:
    res = hashlib.sha256(p.encode('utf-8'))  # 首先你得知道他是用什么算法加密的
    dic[p] = res.hexdigest()

# 模拟撞库得到密码
for k,v in dic.items():
    if v == passwd:
        print('撞库成功,密码是%s' % k)  # 撞库成功,密码是xio0327
        break

密码加盐

import hashlib

m = hashlib.sha256()
m.update('撒'.encode('utf-8'))
m.update('xio'.encode('utf-8'))
m.update('盐'.encode('utf-8'))
m.update('0327'.encode('utf-8'))
print(m.hexdigest())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值