python-计算文件ed2khash

ed2khash计算方法也很简单,wiki上有描述:

eD2k Hash 算法是一种MD4算法的变体。其函数是一个MD4 Hash列表(MD4 Hash List)的MD4根Hash,但与MD4 Hash的结果不同:
文件数据被分区成多个9500KB的chunks块(9728000字节或大约9.28MB)和剩余的一个chunk。每个chunk都要计算128-bit MD4 校验和。如果文件长度正好是9500KB的整倍数,剩余的大小为0的chunk依然存在于Hash列表的末尾。将这些chunk的MD4校验和按顺序联合起来,并使用MD4计算Hash,可得到eD2k Hash。对于仅由一个chunk组成的文件(即文件大小小于9500KB),MD4和eD2k Hash是完全相同的。

import hashlib
def cal_ed2k(fp):
        fp.seek(0)
        ed2k=hashlib.new('md4')
        chuck=fp.read(9500*1024)
        ed2k.update(hashlib.new('md4',chuck).digest())
        while(len(chuck)==9500*1024):
            chuck=fp.read(9500*1024)
            ed2k.update(hashlib.new('md4',chuck).digest())
        hash_ed2k=ed2k.hexdigest()
        return hash_ed2k

关于xu xc

已经工作了,有点懒,完了在写自我介绍吧
此条目发表在hash, python, 日誌, 算法, 編程分类目录,贴了, 标签。将固定链接加入收藏夹。