hashlib是个专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。 md5经常用来做用户密码的存储。而sha1则经常用作数字签名。
In [1]: import hashlib
In [2]: a = "a test string"
In [3]: print hashlib.md5(a).hexdigest()
b1a4cf30d3f4095f0a7d2a6676bcae77
In [4]: print hashlib.sha1(a).hexdigest()
2da75da5c85478df42df0f917700241ed282f599
In [5]: print hashlib.sha224(a).hexdigest()
fb29c0daf4a995d2caad4cc5150a6977f871ac34c1c9c97d740d90d0
In [6]: print hashlib.sha256(a).hexdigest()
b830543dc5d1466110538736d35c37cc61d32076a69de65c42913dfbb1961f46
In [7]: print hashlib.sha384(a).hexdigest()
1b7c9d326961a90d6fe5e168b7339852a6238af953e5cad5501d140167bdfe8ebd82d7df5f7915ebad3e2f89d977357f
In [8]: print hashlib.sha512(a).hexdigest()
fd308aadbf52384412c4ba3e2dfe3551e0faa2e7455898dae04fda4f238569e3889c56cbd4d120cf69f81a5f06456f327c19100eaed2e590888342f1ce3e0261
对以下代码的说明:
1.首先从python直接导入hashlib模块
2.调用hashlib里的md5()生成一个md5 hash对象
3.生成hash对象后,就可以用update方法对字符串进行md5加密的更新处理
4.继续调用update方法会在前面加密的基础上更新加密
5.加密后的二进制结果
6.十六进制结果
In [11]: m = hashlib.md5()
In [12]: m.update("Nobody inspects")
In [13]: m.digest()
Out[13]: '>\xf7)\xcc\xf0\xccV\x07\x9c\xa5F\xd5\x80\x83\xdc\x12'
In [14]: m.hexdigest()
Out[14]: '3ef729ccf0cc56079ca546d58083dc12'
In [15]: m.update(" the spammish repetition")
In [16]: m.hexdigest()
Out[16]: 'bb649c83dd1ea5c9d9dec9a18df0ffe9'
In [17]: m.digest()
Out[17]: '\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
如果只需对一条字符串进行加密处理,也可以用一条语句的方式:
In [19]: print hashlib.new("md5", "Nobody inspects the spammish repetition").hexdigest()
bb649c83dd1ea5c9d9dec9a18df0ffe9