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. go读取键盘输入两种方式

    一种scanf var x intfmt.Println("input a int number")fmt.Scan(&x)fmt.Printf("读取到内容:% ...

  2. go 虎牙爬取

    package main import ( "fmt" "github.com/antchfx/htmlquery" "io/ioutil" ...

  3. linux mount挂载命令

    [root@localhost src]# mount 查询系统中已经挂载的设备 [root@localhost src]# mount -a 依据配置文件 /etc/fstab的内容,自动挂载

  4. ansible使用file模块管理受控机的目录与文件(ansible2.9.5)

    一,ansible的file模块的用途 file 模块实现对文件的基本操作. 例如: 创建文件或目录 删除文件或目录 修改文件权限等 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https:// ...

  5. FreeRTOS链表实现

    直接上源码分析 void vListInitialise( List_t * const pxList ){ pxList->pxIndex = ( ListItem_t * ) &( ...

  6. FrameworkElementFactory中的SetBinding与SetValue

    public static Microsoft.Windows.Controls.DataGridColumn CreateDateColumn(string path, string header) ...

  7. Visual Studio2015 、2017中如何支持MYSQL数据源(转)

    转至:https://blog.csdn.net/ght886/article/details/80902457 Visual Studio默认只显示微软自己的SQL Server数据源,如下图所示: ...

  8. AppWidget使用方法

    手机桌面小组件 public class AppWidget extends AppWidgetProvider { @Override public void onUpdate(Context co ...

  9. 关于sql的随笔(标识列 即自动增长列)

    一.标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点:1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统 ...

  10. Rancher 2.5特性解读丨更简单友好的API和Dashboard

    本文来自Rancher Labs 关注我们,看K8S干货教程 作者简介 张智博,Rancher中国研发与产品总监.7年云计算领域经验,一直活跃在研发一线,经历了OpenStack到Kubernetes ...