- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
Python?base64和hashlib模块及用法详解
目录一、base64模块1、对字符串编解码2、对URL编解码二、hashlib模块1、hashlib模块1.1常用属性1.2常用方法1.3使用步骤2、MD5(消息摘要算法)3、SHA-256(安全哈希算法)
一、base64模块
base64模块提供了在二进制数据和可打印ASCII字符间编解码的功能,包括RFC3548中定义的Base16,Base32,Base64,Ascii85,Base85等编码。
base64模块属于标准库,无需进行安装,导入即可使用。
base64模块支持两种接口:
bytes类型数据进行base64编码。即将类字节对象编码为由ASCII可打印字符表示的bytes。base64编码的bytes类型进行解码。即将类字节对象或纯ASCII字符组成的Unicode字符串解码为bytes。
注意:编码与解码的处理对象是byte,及参数必须是二进制数据,才可以进行正常使用。
1、对字符串编解码
importbase64
str=HelloPython
#默认以utf-8编码
byte_str=str.encode(utf-8)
b64_str=base64.b64encode(byte_str)
print(b64_str)
print(-------------)
#默认以utf-8解码
byte_str2=base64.b64decode(b64_str)
str2=byte_str2.decode(utf-8)
print(str2)
2、对URL编解码
importbase64
url=k1=v1k2=值二
#默认以utf-8编码
byte_url=url.encode(utf-8)
b64_url=base64.b64encode(byte_url)
print(b64_url)#baHR0cDovL3d3dy5iYWlkdS5jb20/azE9djEmazI95YC85LqM
print(-------------)
#默认以utf-8解码
byte_url2=base64.b64decode(b64_url)
url2=byte_url2.decode(utf-8)
print(url)#k1=v1k2=值二
二、hashlib模块
1、hashlib模块
hashlib是Python的内置模块,提供了多种安全方便的常见摘要算法,其中主要包括MD5,SHA1,SHA256,SHA384,SHA512等。这些摘要方法在使用上通用,返回带有同样接口的hash对象,对算法的选择,差别只在于构造方法的选择。
摘要算法又称哈希算法、散列算法。它通过一个函数算法,把任意长度的数据转换为一个长度固定的数据串)。
1.1常用属性
importhashlib
#列出hashlib内容
print(dir(hashlib))
#列出所有加密算法
print(hashlib.algorithms_available)
print(hashlib.algorithms_guaranteed)
#产生的散列字节大小。
h.digest_size
#哈希内部块的大小
h.block_size
1.2常用方法
#创建指定加密模式的hash对象
hash.new([arg])
#更新哈希对象以字符串参数。
#如果同一个hash对象重复调用该方法,m.update(a);m.update(b)等价于m.update(a+b)
hash.update(arg)
#返回摘要,作为二进制数据字符串值。
hash.digest()
#返回摘要,作为十六进制数据字符串值
hash.hexdigest()
hash.copy()
1.3使用步骤
方式一:
importhashlib
#-------以MD5为例-------
#1.创建hash工厂
m=hashlib.md5()
#2.在内存里面加载二进制数据
#m.update(Hello.encode(utf-8))
#m.update(Python.encode(utf-8))
##等价于,如果二进制数据很长的话,可以分开更新
m.update(HelloPython.encode(utf-8))
print(m.digest_size)#16
print(m.block_size)#64
#3、返回十六进制str摘要值
hash_value=m.he
文档评论(0)