MD5 SHA1 CRC32

md5:

import hashlib

md5 = hashlib.md5()
md5.update(bytes('http://www.baidu.com',encoding="utf-8"))
result = md5.hexdigest()

  

SHA1:

import hashlib

sha1 = hashlib.sha1()
sha1.update(bytes('how to use sha1 in ',encoding="utf-8"))
result = sha1.hexdigest()

  

CRC32:

from zlib import crc32


result = crc32(b'http://www.baidu.com')

  

其中SHA-1与MD5 的最大区别在于其摘要比MD5 摘要长 32 比特。对于强行攻击,产生任何一个报文使之摘要等于给定报文摘要的难度:MD5 是2128 数量级的操作,SHA-1 是2160 数量级的操作。但由于SHA-1 的循环步骤比MD5 多(80:64)且要处理的缓存大(160 比特:128 比特),SHA-1 的运行速度比MD5 慢。

虽然在数据表非常大的时候CRC32会出现大量hash冲突,但是能提供更好的性能,在mysql性能优化能起到很好的作用。查询语句可以这样来写:

select id from table where url_crc=%s and url=%s;

  

posted @ 2018-06-11 09:52  家迪的家  阅读(556)  评论(0编辑  收藏  举报