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. C# 获取两点(经纬度表示)间的距离

    #region 获取两点(经纬度表示)间的距离 /// <summary> /// 获取两点(经纬度表示)间的距离 /// </summary> /// <param n ...

  2. CSS选择器的关系

    .selector > box 的使用 该方式,只会选择其第一级子盒子 .selector + box 的使用 除了其本身,选择其兄弟盒子,但会受到其他元素的影响,如在兄弟间添加其他元素,则无法 ...

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

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

  4. vue学习笔记(一)---- vue指令( v-bind 属性绑定 )

    看栗子: <body> <div id="app"> <input type="button" value="按钮&qu ...

  5. 基于node.js的爬虫框架 node-crawler简单尝试

    百度爬虫这个词语,一般出现的都是python相关的资料. py也有很多爬虫框架,比如scrapy,Portia,Crawley等. 之前我个人更喜欢用C#做爬虫. 随着对nodejs的熟悉.发现做这种 ...

  6. Camera2使用textureView支持

    SurfaceView 绘制会有独立窗口, TextureView 没有独立的窗口,可以像普通的 View 一样,更高效更方便 public class MainActivity extends Ap ...

  7. 算法初步(julyedu网课整理)

    date: 2018-11-19 13:41:29 updated: 2018-11-19 14:31:04 算法初步(julyedu网课整理) 1 O(1) 基本运算 O(logn) 二分查找 分治 ...

  8. uart与usart区别

    uart 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分.它将要传输的资料在串 ...

  9. MySQL全面瓦解2:常用命令和系统管理

    常用命令 打开CMD命令窗口(记住使用管理员身份运行),我们就可以在命令窗口中做一些MySQL的命令操作了: 服务启动和关闭 这个我们上一个章节使用过了:net start mysql,这是服务命令, ...

  10. Zabbix批量添加Hosts

    添加脚本 addhost.py #coding:utf-8 import json import urllib2 from urllib2 import URLError import sys imp ...