python-26 hashlib 模块
Posted 优雅的代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-26 hashlib 模块相关的知识,希望对你有一定的参考价值。
1. 介绍hashlib
hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象.
常用的属性和方法:
algorithms:列出所有加密算法(\'md5\',\'sha1\',\'sha224\',\'sha256\',\'sha384\',\'sha512\')
digesti_size:产生的散列的字节大小
md5()/sha1():创建一个md5或者sha1加密模式的hash对象
update(arg):用字符串参数来更新hash对象,如果同一个has对象重复调用该方法,如下:m.update(a); m.update(b),则等于m.update(a+b)
digest():返回摘要,作为二进制数据字符串值
hexdigest():返回摘要,作为十六进制数据字符串值
copy():复制
2. hashlib的使用
import hashlib s=\'hello\'.encode(\'utf8\') # 字符串存储或传输时需要变成字节流(bytes,或二进制文本),通过encode(编码)方法实现, 编码方式可选,一般用utf-8编码 ss=bytes(\'hello\',encoding=\'utf8\') #也可以通过bytes方法,直接转化 print(type(s),s,s.decode(\'utf8\')) #-------方法一: obj=hashlib.md5() obj.update(\'hello\'.encode(\'utf8\')) print(obj.hexdigest()) #生成32位16进制数字 #------方法二: obj=hashlib.md5(\'hello\'.encode(\'utf8\')) #方法二是方法一的简写形式,可以不用调用update()函数 print(obj.hexdigest()) #--------方法三 obj=hashlib.md5(\'zzg\'.encode(\'utf8\')) #参数表示加盐,也要转化为bytes类型,也可以不加盐 obj.update(\'hello\'.encode(\'utf8\')) print(obj.hexdigest()) #--------方法四 obb=hashlib.md5() obb.update(\'zzg\'.encode(\'utf8\')) obb.update(\'hello\'.encode(\'utf8\')) print(obb.hexdigest()) #分别进行2次update,相当于2段字符串拼接在一起进行1次update #--------方法五 obf=hashlib.md5() # obf=hashlib.md5(\'zzghello\'.encode(\'utf8\')) 可以将2步合为1步 obf.update(\'zzghello\'.encode(\'utf8\')) #与加盐效果一样,加盐实质就是字符串拼接,3种方法实为1种方法,效果一样 print(obf.hexdigest())
以上是关于python-26 hashlib 模块的主要内容,如果未能解决你的问题,请参考以下文章