1.是啥?
hashlib,故名思意,python的hash库,其中实现了多种hash方法,有md5,sha1,sha256等hash方法,可以用于加密。思想最主要的是把一段字符串转换成相对较短的数值。
2.咋用?
hashlib封装了不同的hash方法类,对其中一个方法初始化便会生成一个hash方法的对象。
import hashlib
origin_str = 'python'
md5 = hashlib.md5()
md5.update(origin_str.encode())#需将origin_str编码成bytes进行hash
md5.digest()#返回bytes类型的字符串的摘要,也就是hash值
#out b'#\xee\xebCG\xbd\xd2k\xfck~\xe9\xa3\xb7U\xdd'
但是这样二进制的hash值不是我们想要处理的形式
hash_value = int.from_bytes(md5.digest(),byteorder="big")
#out 47763518201550007491658205975564211677
此时再对这样的数值操作即可
bit_count=20
hash_code = hash_value%2**bit_count
#out 480733
3. 原理
掰扯掰扯其中的一些方法的具体实现.我先看看再说。
4. Tips
如果用到hash对象的update方法的话,相同原文会每次生成不同的hash_value,若要相同字符串每次生成同样的hash_value的话,将原文作为参数进行初始化即可。