码迷,mamicode.com
首页 > 编程语言 > 详细

python-26 hashlib 模块

时间:2019-01-13 10:57:46      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:构造   模块   display   进制   流行   二进制   pytho   ide   定义   

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())
View Code

技术分享图片

 

python-26 hashlib 模块

标签:构造   模块   display   进制   流行   二进制   pytho   ide   定义   

原文地址:https://www.cnblogs.com/Zhouzg-2018/p/10261867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!