摘要:hashlib:

摘要算法的模块

用处:
  1、查看某两个文件是否完全一致
    "abcdefggg"
    "abcdefhhg"
  2、加密认证
    把密码加密后写入文件
    (发生任何变化 都不行)

模块:
  1、md5
  2、sha sha256 sha512 等等

简单示例:

import hashlib      #导入模块

obj = hashlib.md5('字符串')             #创建md5类的对象         (加盐:静态和动态)
obj.update(b"对比内容,或 加密内容") #传入数据 bytes 类型 bytes()
a = obj.hexdigest() #对比的结果
print(a) #打印,写入文件 等等操作

校验两个字符串是否一致:

import hashlib
md5_obj1 = hashlib.md5()
md5_obj1.update(b'How are you?') #b"" 转换成bytes 类型
a = md5_obj1.hexdigest() #hexdigest 找摘要算法要结果
print(a)
#04e35eb3e4fcb8b395191053c359ca0e
md5_obj2 = hashlib.md5()
md5_obj2.update(b'How are') #两个字符串不一样
b = md5_obj2.hexdigest()
print(b) #打印摘要算法 的结果
# 699f3620f6b19226ec27865572f7b704
print(a == b) #md5 也不一样
#False #文章校对(是否完全一致),密码校验 等等

一篇文章的校验:

  md5_obj.update()
  支持多行,校验文件的时候,分别读取2个文件,一行一行读,每一行update一下
  对比最终的hexdigest()

import hashlib
md5_obj1 = hashlib.md5()
md5_obj2 = hashlib.md5()
with open('name','r',encoding='utf-8') as f,\
open('文件','r',encoding='utf-8') as f1:
for line in f:
md5_obj1.update(bytes(line,encoding='utf-8'))
for line1 in f1:
md5_obj2.update(bytes(line1,encoding='utf-8')) #update() 累加
a = md5_obj1.hexdigest()
b = md5_obj2.hexdigest()
print(a == b) # 对比最终的 hexdigest()
#True 或 False

import hashlib
md5_obj1 = hashlib.md5()
md5_obj2 = hashlib.md5()
with open('name','rb') as f,\ #直接用 "rb" 模式打开 , 不用 encoding='utf-8' 编码
open('文件','rb') as f1:
for line in f:
md5_obj1.update(bytes(line))
for line1 in f1:
md5_obj2.update(bytes(line1))
a = md5_obj1.hexdigest()
b = md5_obj2.hexdigest()
print(a == b)

密码加密:

import hashlib
md5_obj = hashlib.md5()
md5_obj.update(b'') # 密码
a = md5_obj.hexdigest()
print(type(a))
with open('name','w') as f:
# f.write(bytes(a,encoding='utf-8')) #'wb' 模式打开 , 要转成 bytes类型
f.write(a)

如果只是简单的加密,可以暴力破解:撞库

  http://www.cmd5.com/ 一个在线md5 破解网站

  撞库: 暴力破解密码

加盐: 为客户加字符串(有的客户密码太简单,主动弄复杂)

分为静态加盐和动态加盐

静态加盐:

import hashlib
md5_obj = hashlib.md5('fdfdf@#$'.encode('utf-8')) # 给下面的密码加上一些字符串
md5_obj.update(b'') # 密码
a = md5_obj.hexdigest()
print(a)
e8d298f03f7b6b0ce169ba30729a19e5

动态加盐:

md5_obj = hashlib.md5('用户名 + @#@df +密码'.encode('utf-8'))  

sha:

也是个算法

sha 和 hsshlib 一样

sha:
  1.sha
  2.sha256
  3.sha512
  4.....

256,512,字节数越多, 运行速度越慢,,安全性更高

小结:

1、摘要的过程不可逆
2、能做的事:
  文件的一致性检测
  用户的加密认证:
    单纯的md5不够安全
    静态加盐: 简单的盐可能被破解,且破解之后所有的盐都失效了
    动态加盐:动态的

hashlib-sha摘要算法模块的更多相关文章

  1. day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块

    # 多态的理解:# Python 天生自带多态# 鸭子类型 list 和 tuple 就是一对鸭子类型 很像但是没有继承关系## 而其他的类型 上传参数或者打印参数的时候 必须是指定的数据类型# -- ...

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

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

  3. hashlib摘要算法模块,logging日志,configparser配置文件模块

    一.hashlib模块(摘要算法模块) 1.算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把 ...

  4. 内置函数 hashlib configparser logging 模块 C/S B/S架构

    1.内置函数 # 内置的方法有很多 # 不一定全都在object中 # class Classes: # def __init__(self,name): # self.name = name # s ...

  5. 模块 -- 序列化 hashlib sha logging (加密 加盐 )

    模块:  一个py文件就是一个模块 模块分类: 1:内置模块,登录模块,时间模块,sys模块,os模块等等 2: 扩展模块, 3:自定义模块,自己写的py文件 python 开发效率之高:python ...

  6. Python模块——HashLib(摘要算法)与base64

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

  7. python 加密 hashlib与hmac模块

    https://www.jb51.net/article/128911.htm hashlib模块简介: hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 ...

  8. Python基础(11)_python模块之time模块、rando模块、hashlib、os模块

    一.模块 1.什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀 模块的本质:模块的本质是一个py文件 2.模块分为三类:1)内置模块:2)第三方模块: ...

  9. hashlib,configparser,logging模块

    一.常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

随机推荐

  1. 通过HTML 取得页面、屏幕、浏览器的高度宽度

    一.介绍 1. 容器 一个页面的展示,从外到内的容器为:屏幕.浏览器以及页面本身. HTML元素展现在页面内,页面展现在浏览器内,而浏览器展现在屏幕内. 通过Js的一些对象可以获取这些容器的高度.宽度 ...

  2. 第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法

    第一章 熟悉Objective -C   编写高质量iOS与OS  X代码的52 个有效方法   第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ...

  3. MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据

    前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: MongoDB最简单的入门教程之二 使用nod ...

  4. Hessian矩阵与牛顿法

    Hessian矩阵与牛顿法 牛顿法 主要有两方面的应用: 1. 求方程的根: 2. 求解最优化方法: 一. 为什么要用牛顿法求方程的根? 问题很多,牛顿法 是什么?目前还没有讲清楚,没关系,先直观理解 ...

  5. swift Equatable 函数签名的测试

    struct Degoo:Equatable { var lex:String var pex:String static func == (left:Degoo, right:Degoo) -> ...

  6. 20针,14针,10针JTAG引脚对应关系

    J-Link是常用的调试工具,用于程序的调试和下载.常用的J-Link的的接口有很多种,常见的有20针,14针和10针. J-Link可以使用JTAG方式下载调试程序,也可以使用SWD方式.从引脚方面 ...

  7. \p{space}|\p{Hex}|\p{Digit}|转译符|\1|\g{-1}|[^ab]|/([^\d\D]+)/

    小骆驼 第七章 漫游正则表达式王国 #!/usr/bin/perl use strict; use warnings; $_ = 'ab \ cde f ghijk10.x12ln'; if(/d/) ...

  8. mongdb数据库的操作

    一.数据库使用 1.使用mongodb服务,必须先开启服务,开启服务使用 mongod --dbpath D:mongdb    (D:mongdb  自己所创建数据库的路径, 在cmd窗口中输入) ...

  9. 洛谷 P3146 248 题解

    https://www.luogu.org/problemnew/show/P3146 区间dp,这次设计的状态和一般的有一定的差异. 这次我们定义$dp[i][j]$表示$[i,j]$的可以合并出来 ...

  10. luogu 数列找不同-莫队

    https://www.luogu.org/problemnew/show/P3901 了解过莫队的人应该都清楚,莫队是一个优化的暴力,可以在相对暴力比较优的时间中,求出一段序列内的某些性质(例:数字 ...