Python hashlib常见摘要算法详解


Posted in Python onJanuary 13, 2020

这篇文章主要介绍了Python hashlib常见摘要算法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等

计算出一个字符串的MD5值:

import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?'.encode("utf8")) #需要指定转码 否则报错 update()必须指定要加密的字符串的字符编码
print( md5.hexdigest())#返回十六进制
print( md5.digest()) #二进制

# 如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:
md5 = hashlib.md5()
md5.update('how to use md5 in '.encode("utf8"))
md5.update('python hashlib?'.encode("utf8"))
print( md5.hexdigest())#返回十六进制

上述结果:

d26a53750bc40b38b65a520292f69306
b'\xd2jSu\x0b\xc4\x0b8\xb6ZR\x02\x92\xf6\x93\x06'
d26a53750bc40b38b65a520292f69306

计算出一个字符串SHA1值:

import hashlib
sha_1 = hashlib.sha1()
sha_1.update('how to use sha1 in '.encode("utf8"))  #需要指定转码 否则报错 update()必须指定要加密的字符串的字符编码
sha_1.update('python hashlib?'.encode("utf8"))
print (sha_1.hexdigest())

# 如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的:
sha2 = hashlib.sha1()
sha2.update('how to use sha1 in python hashlib?'.encode("utf8"))
print (sha2.hexdigest())

打印结果:

2c76b57293ce30acef38d98f6046927161b46a44

2c76b57293ce30acef38d98f6046927161b46a44

读取文件获取MD5值:

import os
import hashlib
#文件md5
def file_md5(pathandname):
  if os.path.isfile(pathandname):
    hashmd5 = hashlib.md5()
    file = open(pathandname, 'rb')
    while True:
      b = file.read(1024)
      if not b:
        break
      hashmd5.update(b)
    file.close()
    return hashmd5.hexdigest()
  else:
    return None

print(file_md5("C:\\Users\\Administrator\\Desktop\\V2.6.1_B511\\hvr_dec"))   #aef87d1d673ca52412b4a950a06b9557

读取文件base64

import base64
import os
# base64,参数为文件路径名
def file_base64(filepath):
  if os.path.isfile(filepath):
    with open(filepath, 'rb') as file:
      file_base64_str = base64.b64encode(file.read())
    return file_base64_str
  else:
    return None

读取sha256

import hmac
import hashlib
def get_hmacsha256(key, message):
  key_bytes = bytes(key, 'utf-8')
  message_bytes = bytes(message, 'utf-8')
  hmacsha256_str = hmac.new(key_bytes, message_bytes, digestmod=hashlib.sha256).hexdigest()
  return hmacsha256_str

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python yield使用方法示例
Dec 04 Python
仅利用30行Python代码来展示X算法
Apr 01 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
详解Python中is和==的区别
Mar 21 Python
python 图片去噪的方法示例
Jul 09 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
May 03 Python
使用python创建生成动态链接库dll的方法
May 09 Python
Python模拟键盘输入自动登录TGP
Nov 27 Python
Pytorch释放显存占用方式
Jan 13 #Python
pytorch 实现删除tensor中的指定行列
Jan 13 #Python
python基于event实现线程间通信控制
Jan 13 #Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 #Python
python、PyTorch图像读取与numpy转换实例
Jan 13 #Python
pytorch 彩色图像转灰度图像实例
Jan 13 #Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 #Python
You might like
PHP脚本的10个技巧(5)
2006/10/09 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
js自定义事件代码说明
2011/01/31 Javascript
jquery radio 操作代码
2011/03/16 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
python3 实现对图片进行局部切割的方法
2018/12/05 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
争先创优个人总结
2015/03/04 职场文书
五年级数学教学反思
2016/02/16 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
Java中try catch处理异常示例
2021/12/06 Java/Android
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python