hashlib(1)

# hashlib模块
# 现在写登录认证的时候,需要保存用户名和密码,用户名和密码是保存在文件中,并且都是明文,一旦丢了就完蛋了。所以
# 可以用hashlib将密码转换成密文的形式存储,当用户在次输入密码时,hashlib后对之前存储的hashlib值比较即可
# 对同样的值进行hashlib,hashlib的值不会变
# hashlib做的事情
# 比如有两个字符串,各有500W个字,但经过hashlib后,两个字符串中有一个字符不一样,则结果就不一样 # 摘要算法,不管使用什么样的算法,是md5还是sha,使用hashlib的方法不会变
# md5
# 一般情况用的都是md5,比较普遍
# shax # 同样的字符串被hashlib后产生的数值是永远不会变得
# 用在的场景
# 密码的密文存储
# 文件的一致性验证,校验两个文件是否一致,文件传输中常用
# 在下载的时候 检查我们下载的文件和远程的文件是否一致
# 两台机器上的两个文件 你想检查这两个文件是否相同,常用在检查集群服务器下,怀疑某个服务器机器与其他服务器机器不一样的情况,可使用这种摘要算法进行检查 import hashlib
md5_1 = hashlib.md5() # 创建一个md5对象
md5_1.update(b'alex3714') # 对alex3714进行md5的摘要算法
print(md5_1.hexdigest()) # aee949757a2e698417463d47acac93df # 得到密文值 # 用户注册
# 用户输入用户名
# 用户输入密码
# 明文的密码进行摘要算法md5,拿到一个密文的密码
# 将密文密码和用户名写入文件 # 用户登录
# 用户输入登录名和密码
# 拿到用户的密码
# 对用户输入的密码进行摘要算法md5
# 从存储密文密码和用户的文件中找到该用户对应的密码
# 比较本次用户输入的密码,摘要后的密文密码是否与用户注册时的密文密码是否一致 import hashlib
usr = input('username')
pwd = input('pwd')
with open('userinfo') as f:
for line in f:
user, password = line.split('|')
md5 = hashlib.md5()
md5.update(bytes(pwd, encoding='utf-8'))
md5_pwd = md5.hexdigest()
if usr == user and md5_pwd == password:
print('登录成功')

  hashlib(2)

# md5的撞库
# 将所有的可能性的值算出后进行md5算出密文存储在库中,给一个md5值后,被库中的MD5值匹配上了,得到了实际的明文叫做撞库 # 加盐, 加盐的方式可以解决md5的撞库问题
# 动态加盐:使用用户名的一部分和密码的一部分进行加盐
import hashlib
md5_1 = hashlib.md5(b'salt') # 创建一个md5对象,并且加盐
md5_1.update(b'alex3714') # 对alex3714进行md5的摘要算法
print(md5_1.hexdigest()) # 29520817dd17b99ea7af32890f7698f # 得到密文值 与不加盐的不一样了 # 总结:
# hashlib 做摘要计算的,把字节类型的内容进行摘要处理
# 摘要算法有 md5 、sha等
# md5
# 正常的md5算法
# 加盐的md5
# 动态加盐的md5
# 文件的一致性校验中,md5 不需要一般不需要加盐处理
# 整体对alex3714进行摘要和分开对alex3714进行摘要结果是一样的
# md5.update(r'alex') + md5.update(r'3714') = md5.update(r'alex3714')

hashlib模块(摘要算法)的更多相关文章

  1. hashlib模块--摘要算法

    算法介绍: Python的hashlib提供了常见的摘要算法:MD5,SHA()等. 摘要算法,又称哈希算法,散列算法.通过一个函数,吧任意长度的字符串转换为固定长度的字符串(16进制) 摘要算法就是 ...

  2. hashlib 模块 摘要算法

    应用于用户登陆,对密码进行加密操作, #文件操作 # hashlib 摘要算法 #md5 算法: 是32位的16进制组成的数字字符组成的字符串 #应用最广的摘要算法 #效率高,相对不复杂,如果只是传统 ...

  3. hashlib(摘要算法的模块)--重要 (一)

    课件地址:https://www.cnblogs.com/mys6/p/10584933.html  搜索hashlib模块 # 登录认证# 加密 --> 解密# 摘要算法# 两个字符串 :# ...

  4. python模块——hashlib模块(简单文件摘要算法实现)

    #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "loki" # Usage: hashlib模块 import ...

  5. Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)

    本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...

  6. Python模块之hashlib模块、logging模块

    一.hashlib模块 hashlib模块介绍:hashlib这个模块提供了摘要算法,例如 MD5.hsa1 摘要算法又称为哈希算法,它是通过一个函数,把任意长度的数据转换为一个长度固定的数据串,这个 ...

  7. hashlib 模块用来进行hash

    hashlib的基本概述: python中的 hashlib 模块用来进行hash 或者md5加密,而且这种加密是不可逆的,所以这种算法又被称为摘要算法, 其支持Opennssl库提供的所有算法,包括 ...

  8. Python基础-列表推导式、匿名函数、os/sys/time/datetime/pymysql/xlwt/hashlib模块

    列表推导式 [表达式 for 变量 in range(n) if 条件]  等效于 for 变量 in in range(n): if 条件: 表达式 优点:书写方便,缺点:不易读 注意:用的是方括号 ...

  9. 通过python的hashlib模块计算一个文件的MD5值

    Python的hashlib提供了很多摘要算法,如MD5,SHA1等常用算法. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(如MD5值 ...

随机推荐

  1. hugo网站配置聊天

    date: "2020-10-18T22:11:05+08:00" title: "hugo网站配置聊天" tags: ["dao"] ca ...

  2. df du linux空间清理,查看文件大小

    df -h ,这个命令用于查看服务器空间,运行后的效果图如下: [root@localhost /]# df -h Filesystem Size Used Avail Use% Mounted on ...

  3. 纯CSS+HTML自定义checkbox效果[转]

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. Java爬取同花顺股票数据(附源码)

    最近有小伙伴问我能不能抓取同花顺的数据,最近股票行情还不错,想把数据抓下来自己分析分析.我大A股,大家都知道的,一个概念火了,相应的股票就都大涨. 如果能及时获取股票涨跌信息,那就能在刚开始火起来的时 ...

  5. Vue3实战系列:Vue3.0 + Vant3.0 搭建种子项目

    最近在用 Vue3 写一个开源的商城项目,开源后让大家也可以用现成的 Vue3 大型商城项目源码来练练手,目前处于开发阶段,过程中用到了 Vant3.0,于是就整理了这篇文章来讲一下如何使用 Vue3 ...

  6. E. Xenia and Tree 解析(思維、重心剖分)

    Codeforce 342 E. Xenia and Tree 解析(思維.重心剖分) 今天我們來看看CF342E 題目連結 題目 給你一棵樹,有兩種操作,把某點標成紅色或者查詢離某點最近的紅點有多遠 ...

  7. 解决Linux-Centos7启动Mysql服务失败丢失mysql.sock问题

    在新安装mysql后进行启动发现报错 mysql启动服务命令 systemctl start mysqld@3306 Starting mysqld (via systemctl):  Job for ...

  8. 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案

    摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...

  9. 4g工业路由器的覆盖范围分析

    4G工业路由器通常覆盖范围在60-80米之间,而影响4G工业路由器的覆盖范围有以下几个因素. 影响4g工业路由器覆盖范围的因素一:环境 空旷的环境下4g工业路由器的信号覆盖范围必然更加广阔,如果传输环 ...

  10. Java学习的第三天

    1.今天学了main函数具体的解读如 main函数关键字的意义 变量命名 2.在2.1当中的cmd命令实施失败,文件路径没有找到. 3.明天学习变量范围和注释阅读大道至简.