返回顶部
首页 > 资讯 > 后端开发 > Python >python中hashlib模块用法示例
  • 743
分享到

python中hashlib模块用法示例

示例模块python 2022-06-04 19:06:31 743人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

我们以前介绍过一篇python加密的文章:Python 加密的实例详解。今天我们看看python中hashlib模块用法示例,具体如下。 hashlib hashlib主要提供字符加密功能,将md5和sh

我们以前介绍过一篇python加密的文章:Python 加密的实例详解。今天我们看看python中hashlib模块用法示例,具体如下。

hashlib

hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法
具体应用


#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#pyversion:python3.5
#owner:fuzj

import hashlib
# ######## md5 ########
string = "beyongjie"
md5 = hashlib.md5()
md5.update(string.encode('utf-8'))   #注意转码
res = md5.hexdigest()
print("md5加密结果:",res)
# ######## sha1 ########
sha1 = hashlib.sha1()
sha1.update(string.encode('utf-8'))
res = sha1.hexdigest()
print("sha1加密结果:",res)
# ######## sha256 ########
sha256 = hashlib.sha256()
sha256.update(string.encode('utf-8'))
res = sha256.hexdigest()
print("sha256加密结果:",res)
# ######## sha384 ########
sha384 = hashlib.sha384()
sha384.update(string.encode('utf-8'))
res = sha384.hexdigest()
print("sha384加密结果:",res)
# ######## sha512 ########
sha512= hashlib.sha512()
sha512.update(string.encode('utf-8'))
res = sha512.hexdigest()
print("sha512加密结果:",res)

输出结果:


md5加密结果: 0e725e477851ff4076f774dc312d4748
sha1加密结果: 458d32be8ea38b66300174970ab0a8c0b734252f
sha256加密结果: 1e62b55bfd02977943f885f6a0998af7cc9cfb95c8ac4a9f30ecccb7c05ec9f4
sha384加密结果: e91cdf0d2570de5c96ee84e8a12cddf16508685e7a03b3e811099cfcd54b7f52183e20197cff7c07f312157f0ba4875b
sha512加密结果: 3f0020a726e9c1cb5d22290c967f3Dd1bcecb409a51a8088db520750c876aaec3f17a70d7981cd575ed4b89471f743f3f24a146a39d59f215ae3e208d0170073

注意:hashlib 加密啊的字符串类型为二进制编码,直接加密字符串会报如下错误:


sha1 = hashlib.sha1()
sha1.update(string)
res = sha1.hexdigest()
print("sha1加密结果:",res)

TypeError: Unicode-objects must be encoded before hashing

可以使用encode进行转换


shaa1 = hashlib.sha1()
shaa1.update(string.encode('utf-8'))
res = shaa1.hexdigest()
print("sha1采用encode转换加密结果:",res)

或者使用byte转换为二进制


shab1 = hashlib.sha1()
shab1.update(bytes(string,encoding='utf-8'))
res = shab1.hexdigest()
print("sha1采用byte转换的结果:",res)

以上输出:


sha1采用encode转换加密结果: 458d32be8ea38b66300174970ab0a8c0b734252f
sha1采用byte转换的结果: 458d32be8ea38b66300174970ab0a8c0b734252f

常用方法

hash.update(arg) 更新哈希对象以字符串参数, 注意:如果同一个hash对象重复调用该方法,则m.update(a); m.update(b) 等效于 m.update(a+b),看下面例子


m = hashlib.md5()
m.update('a'.encode('utf-8'))
res = m.hexdigest()
print("第一次a加密:",res)
m.update('b'.encode('utf-8'))
res = m.hexdigest()
print("第二次b加密:",res)

m1 = hashlib.md5()
m1.update('b'.encode('utf-8'))
res = m1.hexdigest()
print("b单独加密:",res)
m2 = hashlib.md5()
m2.update('ab'.encode('utf-8'))
res = m2.hexdigest()
print("ab单独加密:",res)

输出结果:
第一次a加密: 0cc175b9c0f1b6a831c399e269772661
第二次b加密: 187ef4436122d1cc2f40dc2b92f0eba0
b单独加密: 92eb5ffee6ae2fec3ad71c777531578f
ab单独加密: 187ef4436122d1cc2f40dc2b92f0eba0

hash.digest() 返回摘要,作为二进制数据字符串值,

hash.hexdigest() 返回摘要,作为十六进制数据字符串值,

hash.copy() 复制

高级加密

以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。


low = hashlib.md5()
low.update('ab'.encode('utf-8'))
res = low.hexdigest()
print("普通加密:",res)
high = hashlib.md5(b'beyondjie')
high.update('ab'.encode('utf-8'))
res = high.hexdigest()
print("采用key加密:",res)
输出结果:
普通加密: 187ef4436122d1cc2f40dc2b92f0eba0
采用key加密: 1b073f6b8cffe609751e4c98537b7653

附加HMAC-SHA1各语言版本实现

在各大开放平台大行其道的互联网开发潮流中,调用各平台的api接口过程中,无一例外都会用到计算签名值(sig值)。而在各种计算签名的方法中,经常被采用的就是HMac-SHA1,现对HMAC-SHA1做一个简单的介绍:

HMAC,散列消息鉴别码,基于密钥的Hash算法认证协议。实现原理为:利用已经公开的Hash函数和私有的密钥,来生成固定长度的消息鉴别码;

SHA1、MD5等Hash算法是比较常用的不可逆Hash签名计算方法;

BASE64,将任意序列的8字节字符转换为人眼无法直接识别的符号编码的一种方法;

各个语言版本的实现为:

Python版:


       import hmac
       import hashlib
       import base64
       hmac.new(Token,data,hashlib.sha1).digest().encode('base64').rstrip()

Token:即接口的key

data:要加密的数据

PHP版:


       base64_encode(hash_hmac("SHA1",clientStr,Token , true))

C++版(Openssl):


        HMAC( EVP_sha1(),
           strKey.data(),
           strKey.size(),
          (unsigned char*) strRandom.data(),
           strRandom.size(), digest, &digest_len))

Shell版:


       echo -n '3f88a95c532bea70' | openssl dgst -hmac '123' -sha1 -binary | base64

总结

以上就是本文关于python中hashlib模块用法示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:浅谈Python由__dict__和dir()引发的一些思考、浅谈使用Python变量时要避免的3个错误等,感谢朋友们对本站的支持!

--结束END--

本文标题: python中hashlib模块用法示例

本文链接: https://lsjlt.com/news/16257.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python中hashlib模块用法示例
    我们以前介绍过一篇Python加密的文章:Python 加密的实例详解。今天我们看看python中hashlib模块用法示例,具体如下。 hashlib hashlib主要提供字符加密功能,将md5和sh...
    99+
    2022-06-04
    示例 模块 python
  • python hashlib模块算法
    python中的hashlib为我们提供了常见的摘要算法,如MD5、sha1 那么现在问题来了,摘要算法是what? 摘要算法又称哈希算法、散列算法。 它指的是把任意长度的数据data,通过函数f(),转换为一个长度固定的摘要diges...
    99+
    2023-01-30
    算法 模块 python
  • python hashlib模块
    hashlib模块:用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法SHA512 安全性最高SHA和MD5 是2种算法,SHA算法比...
    99+
    2023-01-30
    模块 python hashlib
  • python模块——hashlib
    python模块——hashlibhashlib模块是对许多hash函数的一个公共接口new(name, string = '')    执行给定的hash函数来返回一个新的hash对象,使用给定的字符串数据初始化hash对象。如:    ...
    99+
    2023-01-31
    模块 python hashlib
  • python模块之hashlib
    hashlib模块实现了多种安全哈希和信息摘要算法的通用接口,包括FIPS中定义的SHA1, SHA224, SHA256, SHA384, SHA512以及RFC 1321中定义的MD5 注意点:1. adler32及crc32哈希由z...
    99+
    2023-01-31
    模块 python hashlib
  • python加密模块-hashlib模块
    hashlib模块 用于加密相关的操作,3.X里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 (sha比md5 更复杂、md5 不能反解) 具体应用:用于网站防篡改。具...
    99+
    2023-01-31
    模块 python hashlib
  • 常用模块 - hashlib模块
    一、简介 Python的hashlib提供了常见的摘要算法,如MD5、SHA1、SHA224、SHA256、SHA384、SHA512等算法。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长...
    99+
    2023-01-31
    模块 常用 hashlib
  • python hashlib模块学习
    目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,...
    99+
    2023-01-31
    模块 python hashlib
  • Python hashlib模块详情
    目录1. hashlib 模块概述1.1hashlib 模块特点1.2hashlib 模块使用步骤2. hashlib 工作原理2.1hash 算法特点2.2hash 构造方法2.3...
    99+
    2024-04-02
  • Python base64和hashlib模块及用法详解
    目录一、base64模块1、对字符串编解码2、对URL编解码二、hashlib模块1、hashlib模块1.1 常用属性1.2 常用方法1.3 使用步骤2、MD5(消息摘要算法)3、...
    99+
    2023-02-24
    Python base64和hashlib模块 Python base64和hashlib
  • Python基础之hashlib模块subprocess模块logging模块
    目录一、hashlib模块基本操作与用法二、subprocess模块简介基本操作与用法三、logging模块简介基本操作与用法一、hashlib模块 什么是哈希模块: hashlib...
    99+
    2024-04-02
  • Python中time模块和datetime模块的用法示例
    time模块方法: time.time():获取当前时间的时间戳 time.localtime():接受一个时间戳,并把它转化为一个当前时间的元组。不给参数的话就会默认将time.time()作为参数传入 ...
    99+
    2022-06-04
    模块 示例 Python
  • Python hashlib模块详细讲解使用方法
    目录1.hashlib的简介2.hashlib的使用1. 常用属性2. 常用方法3. 使用示例3.hashlib的特点4.实际演示1. 基本演示2. 应用场景案例1.hashlib的...
    99+
    2022-11-13
    Python hashlib模块 Python hashlib
  • Python hashlib模块与subprocess模块使用详细介绍
    目录1、什么是哈希hash2、hash的用途3、如何用4、subprocess模块1、什么是哈希hash hash一类算法,该算法接受传入的内容,经过运算得到一串hash值 hash...
    99+
    2024-04-02
  • Python base64和hashlib模块如何使用
    本文小编为大家详细介绍“Python base64和hashlib模块如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python base64和hashlib模块如何使用”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-07-05
  • Python基础之hashlib模块详解
    一、hashlib简介 什么叫hash: hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA5...
    99+
    2022-06-02
    Python hashlib模块 python模块
  • Python pluggy模块的用法示例演示
    目录1 pluggy 简介2 安装3 使用初体验4 详解解释5 HookspeckMarker装饰器支持传入一些特定的参数6 HookImplMarker装饰器也支持传入一些特定的参...
    99+
    2024-04-02
  • python中的 uuid 模块使用示例
    此模块提供不可变的 UUID 对象 (类 uuid) 和函数uuid1()、uuid3()、uuid4()、uuid5(), 用于生成在 RFC 4122 中指定版本1、3、4和5UUIDs 。如果你想要的只是一个唯一 的ID,你应该调用...
    99+
    2023-01-30
    示例 模块 python
  • Python configparser模块的用法示例代码
    1 configparser 使用get方式读取.ini配置文件的配置内容 (1)首先编写如下所示的env.ini配置文件 [server] ip=192.168.1.200 por...
    99+
    2022-12-21
    Python configparser模块 Python configparser模块用法 Python configparser用法
  • Python的加密模块hashlib与base64怎么使用
    这篇文章主要介绍了Python的加密模块hashlib与base64怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python的加密模块hashlib与base64怎么使用文章都会有所收获,下面我们一起...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作