【发布时间】:2016-06-14 18:27:20
【问题描述】:
我测试了md5、sha1、crc32的速度,结果显示md5比sha1慢,我很困惑,因为sha1比md5更复杂。
我执行了我的测试 python 脚本来散列一个 png 图像(你可以使用任何你想要的图像)10000 次,例如: crc_vs_md5.py C:\Users\bigwalnut\Desktop\def.png 10000
结果(单位:s): md5:0.122737341241 sha1:0.0984247229759 crc32: 0.0577822398549
代码如下:
from hashlib import md5, sha1
from zlib import crc32
import sys
import time
numberoftime = 0
content = None
def getMd5():
for x in range(0, numberoftime):
mdfive = md5()
mdfive.update(content)
mdfive.hexdigest()
def getSha1():
for x in range(0, numberoftime):
sha1Obj = sha1()
sha1Obj.update(content)
sha1Obj.hexdigest()
def getCrc32():
for x in range(0, numberoftime):
crc32(content) & 0xffffffff
if len(sys.argv) < 3:
print('You must enter: filename, numberoftime')
exit(1)
elif len(sys.argv) > 3:
print('Only filename, numberoftime is permitted')
exit(1)
filename = sys.argv[1]
numberoftime = int(sys.argv[2])
print filename, numberoftime
with open(filename, 'rb') as f:
content = f.read()
start = time.clock()
getMd5()
stop = time.clock()
print "md5: ", stop - start
start = time.clock()
getSha1()
stop = time.clock()
print "sha1: ", stop - start
start = time.clock()
getCrc32()
stop = time.clock()
print "crc32: ", stop - start
【问题讨论】:
-
results on this link 与你的冲突。
-
了解timeit 以获得更准确结果的好时机。
-
@Selcuk,对不起,我写错了标题,在我的测试中 md5 比 sha1 慢。