千家信息网

Python中hashlib模块的作用是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关Python中hashlib模块的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一:hashlib简
千家信息网最后更新 2026年11月01日Python中hashlib模块的作用是什么

本篇文章给大家分享的是有关Python中hashlib模块的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一:hashlib简介

1、什么叫hash: hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值
2、hash值的特点是(hash值/产品有三大特性:):

  • 2.1、只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验

  • 2.2、不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码(只能有内容返回hash值)

  • 2.3、只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的(如从网上下载文件要进行hash校验,保证网络传输没有丢包)

基于2.1和2.3可以做文件下载一致性的校验
基于2.1和2.2可以对用户密码进行加密
hash算法就像一座工厂,工厂接收你送来的原材料(可以用m.update()

为工厂运送原材料),经过加工返回的产品就是hash值

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

二:将指定的 "字符串" 进行加密。使用hashlib的分步解析

1)在进行md5哈希运算前,需要对数据进行编码,否则报错

import hashlibobj = hashlib.md5()   #构造一个hashlib的对象obj.update("小马过河")  #update对指定字符串进行加密print(obj)           --------------结果:  obj.update("小马过河")TypeError: Unicode-objects must be encoded before hashing

2)obj是hash对象

import hashlibobj = hashlib.md5()obj.update("小马过河".encode("utf-8"))print(obj,type(obj))-------------------结果: 

3)

import hashlibobj = hashlib.md5()obj.update("小马过河".encode("utf-8"))result=obj.hexdigest()print(result)--------------结果:24f67b0f6d02adc8867d612e0e0fc40a

4)给加密增添难度

import hashlibobj = hashlib.md5("mcw@xiaoma@aaaafffff".encode("utf-8"))  #添加一些内容,提高加密复杂度。此处的字符串也要先编码,obj.update("小马过河".encode('utf-8'))result = obj.hexdigest()print(result)-------------------结果:b11740508f28e04837f2c0e3a58cf990

5)用hashlib做成加密函数(添加基础的字符了的)

import hashlibdef get_md5(data):   #传参为需要加密的字符串    obj = hashlib.md5("sidrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8'))    obj.update(data.encode('utf-8'))   result = obj.hexdigest()              return resultval = get_md5('123')print(val)--------------结果:35093270b6352fa9721370b781f7b4d7

三:应用场景案例:用户账号密码登录,对明文密码进行加密

import hashlibUSER_LIST = []def get_md5(data):    obj = hashlib.md5("12:;idrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8'))    obj.update(data.encode('utf-8'))    result = obj.hexdigest()    return resultdef register():    print('**************用户注册**************')    while True:        user = input('请输入用户名:')        if user == 'N':            return        pwd = input('请输入密码:')        temp = {'username':user,'password':get_md5(pwd)}        USER_LIST.append(temp)def login():    print('**************用户登陆**************')    user = input('请输入用户名:')    pwd = input('请输入密码:')    for item in USER_LIST:        if item['username'] == user and item['password'] == get_md5(pwd):            return Trueregister()result = login()if result:    print('登陆成功')else:    print('登陆失败')------------------------结果:**************用户注册**************请输入用户名:小马过河请输入密码:123456请输入用户名:N**************用户登陆**************请输入用户名:小马过河请输入密码:123456登陆成功

用户登录场景分析:实现用户注册,然后进行用户登录的代码分析。

代码分析:

四、校验文件的一致性(如何保证下载的文件过程中不丢包,保证下载数据的完整性)

# -----------文件一致校验----------------'''可以拷贝一个文件放在两个不同的盘中,然后通过判断两个文件的hash值是否相等,判断两个文件是否是同一个文件'''import hashlibm = hashlib.md5()with open(r'G:/logging模块配图.png','rb') as f:    for line in f:        m.update(line)print(m.hexdigest())          #47a6b079cc33a4f312786b46e61e0305import hashlibm = hashlib.md5()with open(r'H:/logging模块配图.png','rb') as f:    for line in f:        m.update(line)print(m.hexdigest())

五、对明文密码进行加密

# 应用:对明文密码进行加密(暴力破解-------用明文密码用一种算法算出一个hash值,与截取的hash值进行比对,比对成功说明明文密码一致,就可以破解用户的密码)'''如用户在某网站进行注册信息,这个时候防止信息被恶意拦截获取,可以对用户明文密码进行加密,存成hash值得形式,这样用户每次登陆虽然输的是明文密码,校验hash值即可'''password=input('>>>>>:').strip()import hashlibm=hashlib.md5()m.update(password.encode('utf-8'))print(m.hexdigest())             #00dcbdaede875d5e23f1f9f64c7849ef# 对密码进行加盐(暗号)----------进一步加强密码的安全性password=input('>>>>>:').strip()import hashlibm=hashlib.md5()m.update('一行白鹭上青天'.encode('utf-8'))         #对密码加盐m.update(password.encode('utf-8'))

六、破解用户注册的密码

# 重点'''模拟撞库破解密码'''import hashlibpasswds=[                      #可以通过random实现对passwds中的内容    'alex3714',    'alex1313',    'alex94139413',    'alex123456',    '123456alex',    'a123lex',    ]def make_passwd_dic(passwds):                #通过明文密码列表,造出与之对应的hash值得字典    dic={}    for passwd in passwds:        m=hashlib.md5()                      #使用md5算法,造了一个工厂        m.update(passwd.encode('utf-8'))     #给工厂运送原材料(即我们要加密的内容)        dic[passwd]=m.hexdigest()            #产出hash值(即最终的产品),将其加入到我们事先造好的空字典中,字典形式:{密码:hash值}    return dicdef break_code(cryptograph,passwd_dic):      #判断拦截的hash值是否与字典中事先造好的hash值相等,相等则说明成功进行破解    for k,v in passwd_dic.items():        if v == cryptograph:            print('密码是===>\033[46m%s\033[0m' %k)cryptograph='aee949757a2e698417463d47acac93df'     #我们拦截拿到的密码,经过加密的hash值break_code(cryptograph,make_passwd_dic(passwds))   #将要破解的密码hash值,和事先造好的hash的字典当做函数的实参传给对应的形参

七、hmac模块的加密方式,与hashlib类似

'''python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密:'''import hmach = hmac.new('天王盖地虎'.encode('utf8'))          #hmac必须要加盐h.update('hello'.encode('utf8'))print(h.hexdigest())                 #1abaae8f65f68f2695a8545c5bc8e738#要想保证hmac最终结果一致,必须保证:#1:hmac.new括号内指定的初始key一样#2:无论update多少次,校验的内容累加到一起是一样的内容# 下面单重方式得到的结果是一样的import hmach2=hmac.new(b'tom')          #初始值必须保证一致,最终得到的结果就会不一样h2.update(b'hello')h2.update(b'world')print(h2.hexdigest())h3=hmac.new(b'tom')         #初始值必须保证一致,最终得到的结果就会不一样h3.update(b'helloworld')print(h3.hexdigest())h4=hmac.new(b'tomhelloworld')   #初始值不一样,所以与上面两种的结果不一样print(h4.hexdigest())'''0426ccec3b134e8c18fdcefee841ef250426ccec3b134e8c18fdcefee841ef25ff1214d895bbaf5f1847db4ebae8212e'''

以上就是Python中hashlib模块的作用是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

密码 用户 加密 内容 结果 文件 明文 输入 模块 算法 一致 小马 保证 字典 字符 工厂 用户名 登陆 成功 字符串 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 互联网新科技 中关村互联网 科技集团 A股互联网金融科技公司 疫情对互联网科技公司影响 工业互联网科技新基建 美国互联网科技 互联网 科技创业 互联网与新科技 百单互联网科技有限公司 互联网科技上市公司 互联网科技公司做什么 互联网公司会议桌创意科技软装饰 湖南洣水互联网科技有限公司扣款 链环科技传统企业怎么转型互联网 深圳育鹏互联网科技有限公司招聘 皮皮虾互联网科技有限公司 工业互联网科技创业 宁波跨境商互联网科技有限公司 萌小萌互联网科技河南有限公司 中智农互联网科技 朗新科技与工业互联网 北京互联网络科技有限公司 互联网科技logo 互联网企业和科技型企业 沐思想互联网科技有限公司 上海互联网科技公司ppt 有人说阿里系是互联网科技企业 唐山双旺合互联网科技产业园 瑞安市蟠桃会互联网科技有限公司
0