当前位置: 首页 > news >正文

hashlib模块

在这里插入图片描述

欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起探讨和分享Linux C/C++/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。


hashlib模块


专栏:《python从入门到实战》


哈希算法,也叫摘要算法。

  • 加密:通过加密解密算法,明文和密文可以相互转换。
  • md5、sha:这里的算法只能把明文变成密文,不能把密文解析成明文。

用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512,MD5算法。

import hashlibm=hashlib.md5()# m=hashlib.sha256() #使用md5算法# m=hashlib.md5(‘abcd’, encode(‘utf-8’)) #加盐 – 在服务端加一些只有自己知道的信息,防止撞库反解m.update('hello'.encode('utf8')) #需要先把字符串变成字节,通过encode方法,使用utf8编码,因为要把字符串变成字节,必须要编码方式
print(m.hexdigest())  #5d41402abc4b2a76b9719d911017c592 # - 位数是固定的#把不定长的字符串转换成定长的密文 – 32位,每个字符串对应的密文是唯一的m.update('alvin'.encode('utf8')) #相当于对'helloalvin'加密
print(m.hexdigest())  #92a7e713c30abbb0319fa07da2a5c4afm2=hashlib.md5()
m2.update('helloalvin'.encode('utf8'))
print(m2.hexdigest()) #92a7e713c30abbb0319fa07da2a5c4af

哈希的用途,如果京东淘宝在数据库中通过明文存储用户的账号密文,一旦黑客攻破数据库,所有用户的数据都丢失了。通过md5这种算法加密后,可以得到对每个信息数据一一对应的密文,把密文存在数据库中,即使黑客攻破,拿到密文,但是这个密文加密的数据是不可逆的-md5不可反解,无法翻译为明文。那么用户是怎么登录的呢?用户登陆的时候,会把密文的密码保存,每次登录都是密文与密文对比即可 , 无需反解,全部都是密文,密文对应密文即可。
撞库反解:维护一个特别大的数据库把字符串和密文的一一对应关系保存下来,然后一个一个的试。
撞库的解决方法:在加密时加上一些只有自己知道的信息,因为撞库反解所维护的数据库只有大家都熟悉的一些字符串以及密文对应关系。对客户端,从用户的角度设置复杂密码;对服务端,通过加盐 m=hashlib.md5(‘abcd’, encode(‘utf-8’))

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

import hashlib# ######## 256 ########  算法越复杂,加密耗时越久hash = hashlib.sha256('898oaFs09f'.encode('utf8'))
hash.update('alvin'.encode('utf8'))
print (hash.hexdigest())#e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密。

import hmac
h = hmac.new('alvin'.encode('utf8'))
h.update('hello'.encode('utf8'))
print (h.hexdigest())#320df9832eab4c038b6c1d7ed73a5940

在这里插入图片描述
在这里插入图片描述


http://www.lryc.cn/news/59806.html

相关文章:

  • NC65合并报表如何取消上报并退回以及注意事项和相关问题总结
  • 28岁,终于从字节退休了...
  • 数据的表示和存储——
  • springboot零基础到项目实战
  • 自媒体都在用的5个素材网站,视频、音效、图片全部免费下载~
  • 开放式耳机新巅峰!南卡OE Pro兼备澎湃音质、舒适佩戴、创新设计
  • 1700页,卷S人的 Java《八股文》PDF手册,涨薪跳槽拿高薪就靠它了
  • 普通人是否能从ChatGPT中分一杯羹?
  • SpringBoot自动装配原理(附面试快速答法)
  • 如何在大厂做好架构演进?
  • 减半技术实现求a的n次幂
  • MYSQL8窗口函数
  • 全国大学生智能汽车竞赛——安装Ubuntu操作系统(双系统)
  • [STM32F103C8T6]看门狗
  • 浪潮:2022年净利同比增长51.39%
  • 大厂面试内幕:阿里内部整理出的5000页Java面试复盘指南,起飞!!!
  • 数据结构——哈希表相关题目
  • 域名解析设置方法
  • MySQL连接空闲时间超过8小时报错原因与延伸知识
  • Flutter渲染原理
  • PathCore:IAD文献解读
  • C语言判断一个日期是在该年的第几天案例讲解
  • 【超全总结】集成环信消息推送注意事项(华为、oppo、vivo等)
  • C++回调函数以及epoll中回调函数的使用
  • 0基础学习软件测试有哪些建议
  • MySQL数据类型
  • 【设计模式】从Mybatis源码中学习到的10种设计模式
  • 爬虫攻守道 - 猿人学第20题 - 殊途同归
  • 4.11日报
  • 【LeetCode每日一题: 1039. 多边形三角剖分的最低得分 | 暴力递归=>记忆化搜索=>动态规划 | 区间dp 】