Python 內(nèi)置的 hashlib 模塊提供了常見的摘要算法(或稱哈希算法,散列算法),如 MD5,SHA1, SHA256 等。摘要算法的基本原理是:將數(shù)據(jù)(如一段文字)運算變?yōu)榱硪还潭ㄩL度值。
MD5 (Message-Digest Algorithm 5, 消息摘要算法),是一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個 128 位(16 字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。
SHA1 (Secure Hash Algorithm, 安全哈希算法) 是 SHA 家族的其中一個算法,它經(jīng)常被用作數(shù)字簽名。
hashlib 模塊提供了 md5
函數(shù),我們可以很方便地使用它:
>>> import hashlib
>>>
>>> m = hashlib.md5('md5 test in Python!')
>>> m.digest()
'\xad\xc0\x99\x01\x12\xc7&\xb5~\xb0\xaf \x974\x11\xab'
>>> m.hexdigest() # 使用一個 32 位的 16 進(jìn)制字符串表示
'adc0990112c726b57eb0af20973411ab'
上面,我們是直接把數(shù)據(jù)傳入 md5()
函數(shù),我們也可以通過一次或多次使用 update
來實現(xiàn):
>>> import hashlib
>>> m = hashlib.md5()
>>> m.update('md5 test ')
>>> m.update('in Python!')
>>> m.hexdigest()
'adc0990112c726b57eb0af20973411ab'
SHA1 的使用和 MD5 的使用類似:
>>> import hashlib
>>>
>>> sha1 = hashlib.sha1()
>>> sha1.update('md5 test ')
>>> sha1.update('in Python!')
>>> sha1.hexdigest()
'698a8b18d5f99a140520475c342af455183c58a3'