这两个模块都是用来进行数据加密
hashlib模块里主要支持两个算法md5和sha加密
加密方式:单向加密:只有加密的过程,不能解密md5/sha 对称加密 非对称加密rsa
x=hashlib.md5('abc'.encode('utf-8'))#使用md5方法传入要加密的参数,注意要加密的参数要转换为二进制'abc'.encode('utf-8')为转换步骤
print(x.hexdigest())#加密过后要查看字符串结果要使用hexdigest方法,否则x只是个对象
h1=hashlib.sha1('123'.encode('utf-8'))#转换为16进制 一个字符占4位默认长度为160bit
print(h1.hexdigest())
h2=hashlib.sha224('123'.encode('utf-8'))#转换为16进制 一个字符占4位所以长度为224bit
print(h2.hexdigest())
h3=hashlib.sha256('123'.encode('utf-8'))#转换为16进制 一个字符占4位所以长度为256bit
print(h3.hexdigest())
h4=hashlib.sha384('123'.encode('utf-8'))#转换为16进制 一个字符占4位所以长度为384bit
print(h4.hexdigest())
h5=hashlib.sha512('123'.encode('utf-8'))#转换为16进制 一个字符占4位所以长度为512bit
print(h5.hexdigest())
hmac 加密可以指定秘钥
#在hmac.new(key, msg=None, digestmod='')需要传三个参数
#key: 就是秘钥,并且必须是二进制类型
#msg:需要加密的消息,并且必须是二进制类型
#digestmod: 摘要算法,可以是一个hashlib模块中的哈希算法类,不传的情况下这里默认为空但是这里会报错,例如使用使用hashlib.sha1加密方式作为参数传递
#注:和hashlib加密方式一样的地方是需要吧key和msg使用encode()转换为二进制格式
h6=hmac.new('123456'.encode(),'abcdefg'.encode(),digestmod=hashlib.sha1)
print(h6.hexdigest())