python生成md5加密的方法
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
hashlib介绍
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。
摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
在python3的标准库中,已经移除了md5模块,而关于hash加密算法都放在hashlib这个标准库中,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。
方法一: 使用hashlib库
import hashlib
md5str = hashlib.md5('jsphp.net'.encode(encoding='UTF-8')).hexdigest()
print(md5str)
输出:819bcf6efa10cc22f6201efa59c61f36
hashlib还有一种写法
import hashlib
str = 'jsphp.net'
m = hashlib.md5()
b = str.encode(encoding='utf-8')
m.update(b)
str_md5 = m.hexdigest()
print(str_md5)
m.update的这种写法,加密字符串必须要encode(encoding='utf-8')指定下字符集,否则会报:Unicode-objects must be encoded before hashing
对于英文加密,可以使用b' '
前缀。
如果要对中文加密,使用b' '
前缀来写会报错,原因在于字符转码问题,b' '
在python中只能对ASCII字符进行转码。
要用encode(encoding='utf-8')
将中文转码成UTF-8:
import hashlib
md5str = hashlib.md5('jsphp.net'.encode(encoding='UTF-8')).hexdigest()
print(md5str)
结果:819bcf6efa10cc22f6201efa59c61f36
此外中文不同的encode编码,md5加密得到的结果是不一样的
import hashlib
md5str = hashlib.md5('中文'.encode(encoding='UTF-8')).hexdigest()
print(md5str) #a7bac2239fcdcb3a067903d8077c4a07
md5str2 = hashlib.md5('中文'.encode(encoding='GBK')).hexdigest()
print(md5str2) #bcce109775e8e1972e9f5fcda3e12895
方法二:md5加密,适用与Python3之前
import md5
src = 'jsphp.net'
m1 = md5.new()
m1.update(src)
print m1.hexdigest()
版权声明
本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。
评论