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. linux(centos8):用grep命令查找文件内容

    一,grep的用途: linux平台有最常用的三大文本处理工具:awk/sed/grep grep的功能:搜索指定文件的内容,按照指定的模式匹配,并输出匹配内容所在的行. 需要注意的地方:grep只支 ...

  2. python爬取知乎评论

    点击评论,出现异步加载的请求 import json import requests from lxml import etree from time import sleep url = " ...

  3. Halcon软件介绍与图像基本知识

    1.halcon环境 halcon功能:1.视觉算法(核心)基本 2. 弱语言 3.解释性语言 halcon软件介绍: 1.标题栏 2.菜单栏 3.工具栏 4.工作区 图形窗口(显示图像) 变量窗口( ...

  4. Linux入门到放弃之二《目录处理常用命令的使用方法》

    一,目录操作命令 1.用pwd命令查看当前所在的目录: 2.用ls命令列出此目录下的文件和目录: 3.列出此目录下包括隐藏文件在内的所有文件和目录并且长格式显示: (  -l表示长格式,-a表示隐藏文 ...

  5. IDEA2020.2版本无法开启KDE全局菜单的解决方案

    IDEA2020.2版本无法开启KDE全局菜单的解决方案 前言 :更新了2020.2之后全局菜单一直不生效,一直找不到解决的办法,就退回了2020.1,今天又试了一次,成功解决全局菜单显示问题. 之前 ...

  6. 没事学学KVM(二)创建一台虚拟机

    首先通过VMware创建一台虚机,建议内存大于1G,并开启CPU 的inter vt-x功能,安装好对应的软件后,yum install -y qemu-kvm* virt-* libvirt* 准备 ...

  7. 第三章 MySQL的多实例

    一.MySQL服务构成 1.MySQL程序结构 1.连接层 2.sql层 3.存储引擎层 2.MySQL逻辑结构 1.库 2.表:元数据+真实数据行 3.元数据:列+其它属性(行数+占用空间大小+权限 ...

  8. 爬虫双色球所有的历史数据并保存到SQLite

    前言 上一篇介绍了双色球走势图是怎么实现的,这一篇介绍怎么实现爬虫所有的双色球历史数据,也可以同步分享怎么同步福彩3D数据.采用的C#来实现的. 同步双色球的地址:https://datachart. ...

  9. 【实战】记一次老项目的swagger整合

    1.背景 这两天接到一个整合swagger的任务,本以为很简单,预计两小时内完成,没想到其中有太多的坑,整了两天才完成. 首先项目是一个比较老的项目,之前用的servlet,目前在重构为springm ...

  10. 【Luogu】P1072 Hankson 的趣味题 题解

    原题链接 嗯...通过标签我们易得知,这是一道数学题(废话) 其中,题目给了这两个条件: \(gcd(x,a_0)=a_1,lcm(x,b_0)=b_1\) 所以,根据 \(gcd\) 与 \(lcm ...