杂谈:文件的md5, 用三种方案得出的hash
先说结论:只要文件是同个文件,hash是一致的。
Linux
md5sum filepath
#md5sum 01000.chunk
ae2056ca156511f3a8223e2a4599b7bf 01000.chunk
PHP
md5_file(filename);
<?php
$file = "01000.chunk";
$md5 = md5_file($file);
var_dump($md5);
//string(32) "ae2056ca156511f3a8223e2a4599b7bf"
?>
Python
这个稍微复杂点,要自己实现,而且执行起来效率貌似也有点低。不清楚为何,按理说所有方法都要读取完整文件效率应该相差不大才对,可能是我方法不对。
import hashlib
fname = "01000.chunk"
def md5_file(filename):
m = hashlib.md5() #创建md5对象
with open(filename,'rb') as fobj:
while True:
data = fobj.read(4096)
if not data:
break
m.update(data) #更新md5对象
return m.hexdigest()
hash = md5_file(fname)
print(hash, fname)
