import hashlib md5 = hashlib.md5() md5.update(bytes('http://www.baidu.com',encoding="utf-8")) result = md5.hexdigest()
import hashlib sha1 = hashlib.sha1() sha1.update(bytes('how to use sha1 in ',encoding="utf-8")) result = sha1.hexdigest()
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 慢。python
雖然在數據表很是大的時候CRC32會出現大量hash衝突,可是能提供更好的性能,在mysql性能優化能起到很好的做用。查詢語句能夠這樣來寫:mysql
select id from table where url_crc=%s and url=%s;