1.是啥?
hashlib,故名思意,python的hash庫,其中實現(xiàn)了多種hash方法,有md5,sha1,sha256等hash方法,可以用于加密。思想最主要的是把一段字符串轉(zhuǎn)換成相對較短的數(shù)值。
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
此時再對這樣的數(shù)值操作即可
bit_count=20
hash_code = hash_value%2**bit_count
#out 480733
3. 原理
掰扯掰扯其中的一些方法的具體實現(xiàn).我先看看再說。
4. Tips
如果用到hash對象的update方法的話,相同原文會每次生成不同的hash_value,若要相同字符串每次生成同樣的hash_value的話,將原文作為參數(shù)進行初始化即可。