Python?獲取md5值(hashlib)常用方法
常用方法
import hashlib
# 創(chuàng)建MD5對(duì)象,可以直接傳入要加密的數(shù)據(jù)
m = hashlib.md5('123456'.encode(encoding='utf-8'))
# m = hashlib.md5(b'123456') 與上面等價(jià)
print(hashlib.md5('123456'.encode(encoding='utf-8')).hexdigest())
print(m)
print(m.hexdigest()) # 轉(zhuǎn)化為16進(jìn)制打印md5值結(jié)果
<md5 HASH object @ 0x000001C67C71C8A0>
e10adc3949ba59abbe56e057f20f883e
如果要被加密的數(shù)據(jù)太長(zhǎng),可以分段update, 結(jié)果是一樣的
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())結(jié)果
13562b471182311b6eea8d241103e8f0
封裝成常用庫(kù)md5.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import hashlib
def get_file_md5(file_name):
"""
計(jì)算文件的md5
:param file_name:
:return:
"""
m = hashlib.md5() #創(chuàng)建md5對(duì)象
with open(file_name,'rb') as fobj:
while True:
data = fobj.read(4096)
if not data:
break
m.update(data) #更新md5對(duì)象
return m.hexdigest() #返回md5對(duì)象
def get_str_md5(content):
"""
計(jì)算字符串md5
:param content:
:return:
"""
m = hashlib.md5(content) #創(chuàng)建md5對(duì)象
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)到此這篇關(guān)于Python 獲取md5值(hashlib)的文章就介紹到這了,更多相關(guān)Python 獲取md5值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python hashlib庫(kù)數(shù)據(jù)安全加密必備指南
- Python?hashlib模塊與哈希算法保護(hù)數(shù)據(jù)完整性教程
- Python基礎(chǔ)之hashlib模塊subprocess模塊logging模塊
- 用python計(jì)算文件的MD5值
- python計(jì)算Content-MD5并獲取文件的Content-MD5值方式
- Python實(shí)現(xiàn)檢測(cè)文件的MD5值來(lái)查找重復(fù)文件案例
- Python生成MD5值的兩種方法實(shí)例分析
- Python的hashlib庫(kù)獲取超大文件的md5值實(shí)例探究
相關(guān)文章
Python3.10接入ChatGPT實(shí)現(xiàn)逐句回答流式返回
這篇文章主為大家要介紹了Python3.10接入ChatGPT實(shí)現(xiàn)逐句回答流式返回示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
python中將\\uxxxx轉(zhuǎn)換為Unicode字符串的方法
這篇文章主要介紹了python中將\\uxxxx轉(zhuǎn)換為Unicode字符串的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Python數(shù)據(jù)處理的三個(gè)實(shí)用技巧分享
數(shù)據(jù)處理無(wú)所不在,掌握常用技巧,事半功倍。這篇文章將使用Pandas開展數(shù)據(jù)處理分析,總結(jié)其中常用、好用的數(shù)據(jù)分析技巧,感興趣的可以學(xué)習(xí)一下2022-04-04
Python中如何將一個(gè)類方法變?yōu)槎鄠€(gè)方法
這篇文章主要介紹了Python中如何將一個(gè)類方法變?yōu)槎鄠€(gè)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python實(shí)現(xiàn)人機(jī)中國(guó)象棋游戲
中國(guó)象棋是一種古老的棋類游戲,大約有兩千年的歷史。本文將介紹如何通過(guò)Python中的Pygame模塊實(shí)現(xiàn)人機(jī)中國(guó)象棋游戲,感興趣的可以學(xué)習(xí)一下2022-01-01
Python將圖片轉(zhuǎn)為漫畫風(fēng)格的示例
本文主要介紹了Python將圖片轉(zhuǎn)為漫畫風(fēng)格的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

