python3 TypeError: Unicode-objects must be encoded before hashing

前端之家收集整理的这篇文章主要介绍了python3 TypeError: Unicode-objects must be encoded before hashing前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

python3下,利用hash值对字符串进行md5加密时报错:
TypeError: Unicode-objects must be encoded before hashing

原因是:
python3跟python2区别:python3下字符串为Unicode类型,而hash传递时需要的是utf-8类型,因此,需要类型转换
调用函数时,将字符串进行类型转换

import hashlib

def get_md5(s):
    m = hashlib.md5()
    m.update(s)
    return m.hexdigest()

print(get_md5("gg".encode("utf8"))) 

或者
def get_md5(s):
    m = hashlib.md5()
    m.update(str(s).encode('utf-8'))
    return m.hexdigest()

print(get_md5("gg")) 

 

done!

猜你在找的Python相关文章