Python hashlib常见摘要算法详解
作者:lucky8492 发布时间:2023-07-29 20:04:09
标签:Python,hashlib,摘要,算法
这篇文章主要介绍了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
来源:https://www.cnblogs.com/carey9420/p/12179496.html
0
投稿
猜你喜欢
- 在使用可视化树的过程中,报错了。说是‘dot.exe'not found in path原代码:# import tools nee
- ewebeditor支持兼容IE8 的方法方法:前几天ie8正式公布了,当天中午我就去下载了一个迫不急待的将自己的浏览器升级到ie8,偶还刻
- 如何显示最后十名来访者?代码和说明见下:<%Application.LockIF NOT isArray(&nbs
- 先给大家介绍下python中random模块random与numpy.random对比:1、random.random():生成[0,1)之
- 目前lnmp一键安装包比较多的问题就是502 Bad Gateway,大部分情况下原因是在安装php前,脚本中某些lib包可能没有安装上,造
- 今日使用 npm init webpack love 创建一个新项目,然后执行 npm run dev 之后项目报错,提示错误如下:没有给这
- 本博客将为各位分享Python Helium库,其是在 Selenium库基础上封装的更加高级的 Web 自动化工具,它能够通过网页端可见的
- 本文实例讲述了php中使用key,value,current,next和prev函数遍历数组的方法。分享给大家供大家参考。具体分析如下:ph
- 操作系统:Windows10 64bitPython版本:3.8.0下载地址:https://www.python.org/download
- 使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件。原路径:/
- 1、range函数range(起始值,终点值,间隔)终点值不一定是最后一个取到的值得到的是range类的对象,最后用list转换为【】,In
- <?php echo "<br/>数值强制转换:"; $string="2a";
- 爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家?重新理解爬虫中的一些概念爬虫:自动获取网站数据的程序反爬虫:
- 1.打包项目期间遇到的坑,提前说下,避免重复工作。1.1打包的app出现白屏。出现原因:路径不对,需要改config\index.js解决办
- 1. tqdm的介绍有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以
- 一、背景主流被使用的地理坐标系并不统一,导致我们从不同平台下载的数据由于坐标系的差异往往对不齐。这个现象在多源数据处理的时候往往很常见,因此
- <?php session_start(); $_SESSION['username']="zhuzhao&
- K折交叉交叉验证的过程如下以200条数据,十折交叉验证为例子,十折也就是将数据分成10组,进行10组训练,每组用于测试的数据为:数据总条数/
- Python 是一种极其多样化和强大的编程语言!当需要解决一个问题时,它有着不同的方法。在本文中,将会展示列表解析式(List Compre
- vue项目运行或打包,频繁内存溢出Vue项目运行或打包时,频繁内存溢出情况CALL_AND_RETRY_LAST Allocation fa