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;