python计算文件md5
A. 你好,可以通过python程序实现文件转MD5码吗如果可以能发一下程序吗
使用python获取指定文件的md5码,代码和运行效果如下;
获取wjmd5.py自己的md5为例
#--coding:utf-8;
import hashlib as hash;import os.path;
try: get_ipython();
except:from sys import argv;s1=(os.path.dirname(argv[0]));cwd=(s1 if s1!="" else os.getcwd());os.chdir(cwd);
md5= hash.md5();
res=None;fna=input('请输入文件名');
with open(fna, "rb") as i: md5.update(i.read());res= md5.hexdigest();
print(res);
B. 求大神指导:python求取一个目录和压缩包的md5值
http://stackoverflow.com/questions/1657232/how-can-i-calculate-an-md5-checksum-of-a-directory
C. 用c语言实现python的md5功能
题中所示代码中,python实现了计算空字符串的MD5值,并对MD5的值的十六进制的字符串所表示的字节进行BASE64处理。
不像Python内部有实现md5功能,根据ANSI C标准,C语言的标准库里是没有md5功能的;
但是RFC1231规定了MD5功能的C实现并提供了附件,可以直接用,也可以直接获取现成的实现,在编译链接时指定正确的.h头文件和.lib静态链接库文件;
这里我采取前者的做法(电脑上没有装VC,有VC就简单很多,使用的是minGW)大概六七百行代码左右。
然后这里展示不完,给个实现效果图
BASE64的编码原理
32
E. 有没有大神会用python实现基于md5算法的文件完整性校验啊
importhashlib
importos
BUF_SIZE=65536
defget_md5(file_path):
returnget_md5_of_file(file_path)
defget_md5_of_file(filePath):
md5=hashlib.md5()
withopen(filePath,'rb')asfile:
whileTrue:
data=file.read(BUF_SIZE)
ifnotdata:
break
md5.update(data)
returnmd5.hexdigest()defget_md5_of_string(string):
returnhashlib.md5(string.encode()).hexdigest()
F. 怎么样给python进行性
首先我们查看下md5值的使用方法
我们先建立几个示例文件方便我们参考,文件file1,file1_,file2
python 怎样进行文件对比
2
file1的内容和file1_的内容一致,都为
我是文件hello
为了测试我们的文件一致性
python 怎样进行文件对比
3
file2的内容和file1的文件有所区别,内容为:
我是文件world
python 怎样进行文件对比
4
接下来就是获取md5的方法,我可以了个公共方法,大家直接调用就好
需要导入包
import os
import hashlib
def get_file_md5(filename):
if not os.path.isfile(filename):
return
md5 = hashlib.md5()
f = file(filename,'rb')
while True:
b = f.read(8096)
if not b:
break
md5.update(b)
f.close()
return md5.hexdigest()
然后我们打印下这几个文件的md5值
print 'file1 的md5:%s' % get_file_md5('file1.txt')
print 'file1_的md5:%s' % get_file_md5('file1_.txt')
print 'file2 的md5:%s' % get_file_md5('file2.txt')
python 怎样进行文件对比
5
运行python结果可以看到,file1和file1_文件的md5值是一样的,说明这两个文件是一样的,file2和他们不一样
python 怎样进行文件对比
6
接下来就是使用difflib详细的对比了,写法如下:
import difflib
import sys
file1 = open('file1.txt', 'U').readlines()
file2 = open('file2.txt', 'U').readlines()
diff = difflib.ndiff(file1, file2)
sys.stdout.writelines(diff)
python 怎样进行文件对比
7
运行python结果可以看到,具体两个文件的区别
我是文件
- hello+ world
python 怎样进行文件对比
G. 超大文件如何计算md5
首先,至少没必要先把整个文件读到内存里。比如在 php 里,如果有人 md5(file_get_contents(big_file_name)) 就确实非常不妥当。因为 md5 是每 512 bit 作为一个 chunk 进行计算的。所以可以每次读取一部分的内容(最少 512 bit,比较合适是 st_blksize),进行那些 chunk 部分的计算,之后再读取下一部分内容继续计算。简单先说下,md5是有规范的,提供了现成的算法(规范的名字就是md5算法。RFC 1321 The MD5 Message-Digest Algorithm),我们只需要翻译成c、java、python、js等等代码。前端算超大文件可以取头跟尾chunk内容及整个文件的name + update 时间一起算md5值就比较快了,只是为了做唯一标识来做断点续传,从业务逻辑上应该够用了。推荐使用 js spark-md5 开源库,支持直接append各个部分然后算出md5。我做的断点续传功能就是用它在前端算的md5. 各大网盘 TB级别 md5算法应该是这样的,楼上几位都说了文件md5是文件流分块算出来的,那么网盘想获得TB级别文件的md5就必须读取整个文件的文件流才能得到,但是这么做效率十分低下,运算时间是个问题。但是大家忽略了一个问题,文件在上传的过程也是分块上传的,这些上传的碎片其实也是文件流。那么可以把计算md5的时间分摊到每一个碎片上。这样每上传一个片段就计算一点等上传完成了,文件的md5也就算出来了。okTB级别MD5不是问题了。上传完成md5自然就出来了。 不知道我的猜测大家有其他看法没有。刚才提出都传完了就还怎么秒传。秒传最基本的是先要前端算出md5然后传给后端(可能需要更多种哈希值)我研究了很久前端没有办法秒内完成超大文件MD5的,现在用html5 的api 可以算出任意大小文件的 md5 但是耗时相当长。我没有解决办法。也没有想到那些网盘怎么在前端快速获取md5的。
H. 如何安装一个python自动化接口解密md5
md5.py这个文件放到md5文件夹后,我们在桌面创建快捷方式--浏览--找到你的cmd.exe存放地址--使用cmd.exe,然后我们确定之后。
我们点击刚刚创建的cmd.exe,右键--属性--起始地址改为你的md5安装的文件夹,注意:不是md5.py这个文件的地址,是md5文件夹的安装地址。