⽤python计算⽂件的MD5值
  md5是⼀种常见不可逆加密算法,使⽤简单,计算速度快,在很多场景下都会⽤到,⽐如:给⽤户上传的⽂件命名,数据库中保存的⽤户密码,下载⽂件后检验⽂件是否正确等。下⾯讲解在python中如何使⽤md5算法。
⼀、计算字符串的md5值
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import hashlib
reload(sys)
sys.setdefaultencoding('utf-8')
if __name__ == '__main__':
content = "hello"
md5hash = hashlib.md5(content)
md5 = md5hash.hexdigest()
print(md5)
运⾏上述代码,输出:5d41402abc4b2a76b9719d911017c592
⽤PHP⾃带的md5函数计算同⼀个字符串,验证下hello的md5是否正确。
<?php
$content = "hello";
$md5 = md5($content);
var_dump($md5);  // 输出 5d41402abc4b2a76b9719d911017c592
⼆、计算⽂件的md5值
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import hashlib
reload(sys)
sys.setdefaultencoding('utf-8')
if __name__ == '__main__':
file_name = "3383430480_51_01.jpg"
with open(file_name, 'rb') as fp:
data = fp.read()
file_md5= hashlib.md5(data).hexdigest()
print(file_md5)  # ac3ee699961c58ef80a78c2434efe0d0
⽂件md5计算跟字符串计算是⼀样,直接使⽤hashlib的md5⽅法,然后hexdigests就好了。同样⽤PHP代码验证下
<?php
$file_name = "3383430480_51_01.jpg";
$file_md5 = md5_file($file_name);
var_dump($file_md5);  // 输出 ac3ee699961c58ef80a78c2434efe0d0
从结果可以看出md5是⼀样的,⽂件md5值也不过如此呀,⼼⾥窃喜。。。
如果⼤⽂件呢,⽐如⼏个G呢,上述代码肯定会内存溢出,怎么办呢,可以分块读取⽂件内容并计算。
三、计算⼤⽂件的md5值
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import hashlib
def get_file_md5(fname):
m = hashlib.md5()  #创建md5对象
with open(fname,'rb') as fobj:
while True:
data = ad(4096)
if not data:
break
m.update(data) #更新md5对象
return m.hexdigest()  #返回md5对象
reload(sys)
sys.setdefaultencoding('utf-8')
if __name__ == '__main__':
file_name = "mongodb_us.zip"
file_md5 = get_file_md5(file_name)
print(file_md5)  # 0f45cdbf14de54001e82a17c3d199a4b
四、封装成常⽤库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 = ad(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()
好了,关于md5的计算就到这⾥,有不同见解的同学,欢迎拍砖,⼀起来探讨,谢谢。
以上就是⽤python计算⽂件的MD5值的详细内容,更多关于python 计算⽂件MD5的资料请关注其它相关⽂章!
>python怎么读取py文件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。