Py3 hashlib的sha1和md5加密
md5加密
# 由于MD5模块在python3中被移除
# 在python3中使用hashlib模块进行md5操作
# Python2中没有这个问题
# python3中
# hashlib.md5(data)函数中data 参数的类型应该是bytes
# hash前必须把数据转换成bytes类型
import hashlib
# 待加密信息
str = "4CbLXeGSDxg"
# 创建md5对象
m = hashlib.md5()
# Tips
# 此处必须encode
# 若写法为m.update(str) 报错为: Unicode-objects must be encoded before hashing
# 因为python3里默认的str是unicode
# 或者 b = bytes(str, encoding='utf-8'),作用相同,都是encode为bytes
b = str.encode(encoding='utf-8')
m.update(b)
str_md5 = m.hexdigest()
print('MD5加密前为 :' + str)
print('MD5加密后为 :' + str_md5)
sha1加密
import hashlib
sha1 = hashlib.sha1()
key ='how to use sha1 in '.encode('utf-8')
# key ='how to use sha1 in ' # TypeError: Unicode-objects must be encoded before hashing
sha1.update(key)
print(sha1.hexdigest())
python func
def sha1_func(tamp):
tamp = tamp.encode('utf-8')
sha1 = hashlib.sha1()
sha1.update(tamp)
return sha1.hexdigest()