当前位置:
首页 > Python基础教程 >
-
Python 获取md5值(hashlib)常用方法
这篇文章主要介绍了Python获取md5值(hashlib)常用方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
常用方法
import hashlib
# 创建MD5对象,可以直接传入要加密的数据
m = hashlib.md5('123456'.encode(encoding='utf-8'))
# m = hashlib.md5(b'123456') 与上面等价
print(hashlib.md5('123456'.encode(encoding='utf-8')).hexdigest())
print(m)
print(m.hexdigest()) # 转化为16进制打印md5值
结果
<md5 HASH object @ 0x000001C67C71C8A0>
e10adc3949ba59abbe56e057f20f883e
如果要被加密的数据太长,可以分段update, 结果是一样的
import hashlib
str = 'This is a string.'
m = hashlib.md5()
m.update('This i'.encode('utf-8'))
m.update('s a string.'.encode('utf-8'))
print(m.hexdigest())
结果
13562b471182311b6eea8d241103e8f0
封装成常用库md5.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import hashlib
def get_file_md5(file_name):
"""
计算文件的md5
:param file_name:
:return:
"""
m = hashlib.md5() #创建md5对象
with open(file_name,'rb') as fobj:
while True:
data = fobj.read(4096)
if not data:
break
m.update(data) #更新md5对象
return m.hexdigest() #返回md5对象
def get_str_md5(content):
"""
计算字符串md5
:param content:
:return:
"""
m = hashlib.md5(content) #创建md5对象
return m.hexdigest()
某源码封装
class Files(Storage):
@staticmethod
def temp_put(content, path=None):
"""Store a temporary file or files.
@param content: the content of this file
@param path: directory path to store the file
"""
fd, filepath = tempfile.mkstemp(
prefix="upload_", dir=path or temppath()
)
if hasattr(content, "read"):
chunk = content.read(1024)
while chunk:
os.write(fd, chunk)
chunk = content.read(1024)
else:
os.write(fd, content)
os.close(fd)
return filepath
@staticmethod
def temp_named_put(content, filename, path=None):
"""Store a named temporary file.
@param content: the content of this file
@param filename: filename that the file should have
@param path: directory path to store the file
@return: full path to the temporary file
"""
filename = Storage.get_filename_from_path(filename)
#dirpath = tempfile.mkdtemp(dir=path or temppath())
dirpath = temppath()
Files.create(dirpath, filename, content)
return os.path.join(dirpath, filename)
@staticmethod
def create(root, filename, content):
if isinstance(root, (tuple, list)):
root = os.path.join(*root)
filepath = os.path.join(root, filename)
with open(filepath, "wb") as f:
if hasattr(content, "read"):
chunk = content.read(1024 * 1024)
while chunk:
f.write(chunk)
chunk = content.read(1024 * 1024)
else:
f.write(content)
return filepath
@staticmethod
def copy(path_target, path_dest):
"""Copy a file. The destination may be a directory.
@param path_target: The
@param path_dest: path_dest
@return: path to the file or directory
"""
shutil.copy(src=path_target, dst=path_dest)
return os.path.join(path_dest, os.path.basename(path_target))
@staticmethod
def hash_file(method, filepath):
"""Calculate a hash on a file by path.
@param method: callable hashing method
@param path: file path
@return: computed hash string
"""
f = open(filepath, "rb")
h = method()
while True:
buf = f.read(1024 * 1024)
if not buf:
break
h.update(buf)
return h.hexdigest()
@staticmethod
def md5_file(filepath):
return Files.hash_file(hashlib.md5, filepath)
@staticmethod
def sha1_file(filepath):
return Files.hash_file(hashlib.sha1, filepath)
@staticmethod
def sha256_file(filepath):
return Files.hash_file(hashlib.sha256, filepath)
到此这篇关于Python 获取md5值(hashlib)的文章就介绍到这了,更多相关Python 获取md5值内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.csdn.net/u012206617/article/details/108083431
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比