Python hashlib模块详情

目录
  • 1. hashlib 模块概述
    • 1.1hashlib 模块特点
    • 1.2hashlib 模块使用步骤
  • 2. hashlib 工作原理
    • 2.1hash 算法特点
    • 2.2hash 构造方法
    • 2.3hash 算法过程
    • 2.4hash 常用算法
  • 3. hashlib 属性方法
  • 4. 实操
  • 5、总结

前言:

在互联网的时代,我们在网络中传输过程中都是要经过加密的,常见网络数据传输的加密方式有MD5RSA算法。当然,加密算法还有很多中按加密、解密方式不同分为:对称加密非对称加密hash加密。其中MD5算法的基础是使用的hash算法,针对不同安全的hash安全算法,Python也提一个通用接口hashlib模块。

1. hashlib 模块概述

hashlibPython 内置用于对安全哈希和消息摘要的通用接口模块。hashlib 模块支持提供目前主流hash算法如MD5SHA-1SHA-2SHA-256等通用构造方法,并且返回带有同样接口的hash对象。

1.1hashlib 模块特点

  • 提供主流的hash算法操作,替代md5模块和sha模块
  • 模块调用简单,无需下载安装
  • 主要应用在文本加密场景如用户登录认证

1.2hashlib 模块使用步骤

  • 导入hashlib库import hashlib
  • 建立加密对象
  • 对字符串进行加密处理
  • 获取转换成新的N个Bit

2. hashlib 工作原理

hashlib 模块中加密方式是我们常见的hash算法。hash算法又称为散列表(hash table),也叫做哈希表。

2.1hash 算法特点

  • 具有唯一确定性,不同字符串加密后都是不一样的
  • 不可逆性,hash只有加密没有解密过程
  • 散列碰撞,输出和输入值不是一一对应关系

2.2hash 构造方法

直接定址方法

  • 公式一:hash(key) = key
  • 公式二:hash(key) = a*key+b
  • 我们可以查看到直接定址方法具有线性的特点,因此适用在关键字分布连续的情况

数学分析方法

  • 方式:提取关键字中随机性好的数字位,将其拼接为哈希地址
  • 适用场景:关键字已知的情况下,对关键字中每一位进行取值情况分析

除留余数方法

  • 公式hash(key) = key % p
  • 除数采用取余模运算

2.3hash 算法过程

  • hash 函数接收到输入的字符串,首先会先进行预处理-哈希计算-输入摘要
  • 预处理:将字符串进行填充、分割N块,为hash进行初始化
  • 哈希计算:将预处理的数据完成指定算法生成消息摘要
  • 每指定一种hash算法只会生成固定长度的摘要,长度越长的安全性越高

2.4hash 常用算法

MD5

MD5:message-Digest Algorithm 5 信息-摘要算法5,该算法用于信息完整性进行校验

  • 计算方式:求余、取余、调整长度、进行链接变量循环运算求出结果
  • 用途:主要用于文件校验

SHA-1

SHA:secure Hash Algorithm 安全散列算法1,是一种密码散列算法,SHA-1可以生成摘要消息为40位的16进制即160位(20字节)的散列值

  • 用途:TSL、SSL、PGP、SSH等协议中广泛使用

3. hashlib 属性方法

hashlib 模块相关属性

属性 作用
hashlib.algorithms_guaranteed 保证所有平台上都支持哈希算法的名称
hashlib.algorithms_available 保证平台上运行的Python解释器上可用的hash算法的名称

hashlib 构造对象相关的属性

属性 作用
hash.digest_size 以字节表示哈希对象的大小
hash.block_size 以字节表示哈希算法的内部块大小
hash.name 哈希对象的名称

hashlib 模块相关方法目前可以支持主流hash算法。

方法 作用
hashlib.pbkdf2_hmac(hash_name,password,salt,itera,dklen=None) PKCS#5基于密码的秘钥派生函数2,作为HMAC作为伪随机函数
hashlib.scrypt(password,*,salt) 基于密码加密的秘钥派生函数
hashlib.md5() md5加密方式
hashlib.sha1 sha1加密方式
hashlib.sha256 sha256加密方式
hashlib.blake2b () blake2b加密方式
hashlib.blake2s black2s加密方式

hashlib 构造对象相关的方法

方法 作用
hash.update(data) 以字节表示哈希对象
hash.digest() 返回当前已传给update()方法的数据摘要
hash.hexdigest() 以16进制的字符串表示哈希数据值
hash.copy() 将hash对象复制,共享初始数据的摘要

4. 实操

我们学习hashlib模块中对字符串进行hash算法处理,我们来实操一下吧

import hashlib

text_md5 = hashlib.md5()

text_md5.update(bytes("hello juejing",encoding="utf-8"))

print("md5:",text_md5.hexdigest())

text_sha1 = hashlib.sha1()

text_sha1.update(bytes("hello juejing",encoding="utf-8"))

print("sha1:",text_sha1.hexdigest())

text_sha256 = hashlib.sha3_256()

text_sha256.update(bytes("hello juejing",encoding="utf-8"))

print("sha256:",text_sha256.hexdigest())

text_crc32 = hashlib.()

text_sha256.update(bytes("hello juejing",encoding="utf-8"))

print("sha256:",text_sha256.hexdigest())

重要说明

  • 添加自定义key与字符串进行组合加密(加盐)
  • 以MD5加密为例如下

加盐写法一:

text_md5 = hashlib.md5(b"key")

text_md5.update("字符串".encode("utf-8")) 

加盐写法二:

key = "字符串"

yan = "字符串2"

text_md5 = hashlib.md5()

text_md5.upadte((key+yan).encode("utf-8"))

5、总结

本期,我们对hashlib模块中hash算法特点、hashlib模块相关支出算法的方法进行学习和实操。在hash算法中我们常用使用md5/sha1/sha256主要用于文本校验、用户登录认证等数据校验同时,hash算法确保数据的完整性,具有不可逆性,同时它会遭遇到暴力碰撞,因此hash长度越长的安全性也越高。

到此这篇关于Python hashlib模块兴趣的文章就介绍到这了,更多相关Python hashlib模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python hashlib加密模块常用方法解析

    这篇文章主要介绍了Python hashlib加密模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要用于对字符串的加密,最常用的为MD5加密: import hashlib def get_md5(data): obj = hashlib.md5() obj.update(data.encode('utf-8')) result = obj.hexdigest() return result val = get_md5('12

  • python的flask框架难学吗

    Flask框架难学吗?它和Django哪个更容易一些,这可能是学Python web开发的同学经常问的问题,下面来说一下flask框架. Flask是python的web框架,最大的特征是轻便,让开发者自由灵活的兼容要开发的feature. 为什么要从Flask开始学习web框架? 1.python语言的灵活性给予了Flask同样的特征: 2.无论是用户画像还是产品推荐,python相比其他语言都有极大的优势: 3.Flask轻便,容易上手,试错成本低. 所以,从搭建一个轻便的博客出发,既要容易

  • python flask框架详解

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pip install flask 2.简单上手 一个最小的 Flask 应用如下: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World' if __na

  • Python加密模块的hashlib,hmac模块使用解析

    这篇文章主要介绍了Python加密模块的hashlib,hmac模块使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在写搬砖脚本中,碰到一个加密的信号标签文件无法运行. import hashlib import time m = hashlib.md5() api_key = '' api_secret = '' params = {'api_key':api_key, 'time':int(time.time()), 'symbol

  • 盘点Python加密解密模块hashlib的7种加密算法(推荐)

    前言 在程序中我们经常可以看到有很多的加密算法,比如说MD5 sha1等,今天我们就来了解下这下加密算法的吧,在了解之前我们需要知道一个模块嘛就是hashlib,他就是目前Python一个提供字符加密的模块,它加密的字符类型为二进制编码,所以直接加密字符串会报错. import hashlib string='任性的90后boy' #使用encode进行转换 sha1 = hashlib.sha1() sha1.update(string.encode('utf-8')) res = sha1.

  • python flask框架快速入门

    Flask 本身相当于一个内核,比如可以用 Flask 扩展加入ORM.窗体验证工具,文件上传.身份验证等.Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL. 其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2.这两个也是 Flask 框架的核心. Flask常用扩展包: Flask-SQLalchemy:操作数据库: Flask-script:插入脚本: Flask-migrate:管理迁移数据库: Flask-Session:S

  • python编程Flask框架简单使用教程

    目录 基础知识 使用框架的优点: Flask常用扩展包: 基本格式: 拓展: return 重定向 取网址参数 content-type cookie\session flask路由 request属性 上下文 注册路由 基础知识 使用框架的优点: 稳定性和可扩展性强 可以降低开发难度,提高了开发效率 Flask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架 Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件

  • Python hashlib模块实例使用详解

    这篇文章主要介绍了Python hashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 hashlib模块主要的作用: 加密保护消息安全,常用的加密算法如MD5,SHA1等. 1.查看可用的算法有哪些 hashlib_algorithms.py #!/usr/bin/env python # -*- coding: utf-8 -*- import hashlib # 始终可用的算法 print('始终可用的算法 : {}

  • python框架flask知识总结

    一.Flask蓝图目录 我们之前写的Flask项目都是自己组织的目录结构,其实Flask官方有其推荐的目录结构,以下就是一个符合官方推荐的Flask小型应用的项目结构目录示例,如下: 如图,这就是我们建立好的一个目录结构,一层一层的看一下,首先是app目录,它就是我们的主应用程序目录了,其中有一个__init__.py文件,里面的内容如下: app/init.py from flask import Flask from .views.acc import acc_bp from .views.

  • Python字符串hashlib加密模块使用案例

    主要用于对字符串的加密,最常用的为MD5加密: import hashlib def get_md5(data): obj = hashlib.md5() obj.update(data.encode('utf-8')) result = obj.hexdigest() return result val = get_md5('123') #这里放入要加密的字符串文字. print(val) #简便的写法: pwd = input('请输入密码:').encode('utf-8') result

  • Python中flask框架跨域问题的解决方法

    目录 一.跨域是什么 二.如何解决跨域问题 总结 一.跨域是什么 从一个域名去请求另一个域名,这个过程称之为跨域.浏览器从一个域名的网页去请求另一个域名的资源,域名.端口.协议有一个不一样,请求都属于跨域.跨域其实是浏览器的一个保护政策. 网页上有ajax请求时,会报:No 'Access-Control-Allow-Origin' header is present on the requested '这个错误. 二.如何解决跨域问题 1.跨域请求的过程 因此我们只要做到请求头部信息一致即可.

  • Python基础之hashlib模块详解

    一.hashlib简介 1.什么叫hash: hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值 2.hash值的特点是(hash值/产品有三大特性:): 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验 不能由hash值返解成内容=======>把密码做成has

  • Python hashlib和hmac模块使用方法解析

    python之hashlib模块:主要提供字符加密功能,python3中将md5和sha模块整合到了hashlib模块,支持md5,sha1, sha224, sha256, sha384, sha512等算法 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import hashlib # md5 加密算法 a = hashlib.md5() a.update("Hello Lanten.".encode("utf-8"

  • Python web框架(django,flask)实现mysql数据库读写分离的示例

    读写分离,顾名思义,我们可以把读和写两个操作分开,减轻数据的访问压力,解决高并发的问题. 那么我们今天就Python两大框架来做这个读写分离的操作. 1.Django框架实现读写分离 Django做读写分离非常的简单,直接在settings.py中把从机加入到数据库的配置文件中就可以了. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', # 主服务器的运行ip 'PORT':

  • 利用python实现后端写网页(flask框架)

    如何用python做后端写网页-flask框架 什么是Flask安装flask模块Hello World更深一步:数据绑定后端传入数据从前端获取数据 数据库连接screen创建后台查看删除后台 结束 什么是Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 .Flask使用 BSD 授权.以下程序均在自己服务器上运行(在vs code利用ssh进行连接) 安装flask模块 首先使用pip进行

  • 简单了解Python hashlib模块

    一.hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 :SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法. 1.使用hashlib模块进行MD5加密. import hashlib m = hashlib.md5() m.update(b"Hello") m.update(b"It's me") print(m.hexdigest()) m.update(b"It's been a long

  • [项目布局配置]Nosql与PythonWeb-Flask框架组合

    目录 项目整体布局 应用设置 应用工厂 运行应用 项目整体布局 创建并进入项目文件夹: $ mkdir flask-tutorial $ cd flask-tutorial 接下来按照 安装简介 设置一个 Python 虚拟环境,然后 为项目安装 Flask . 本教程假定项目文件夹名称为 flask-tutorial ,本教程中代码块的顶端的文件 名是基于该文件夹的相对名称. 一个最简单的 Flask 应用可以是单个文件. hello.py from flask import Flask ap

随机推荐