python生成md5加密的方法

来源:网络 文章列表 2019-06-27 8
Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。在python3的标准库中。可以 import hashlib md5str = hashlib.md5('jsphp.net'.encode(encoding='UTF-8')).hexdigest()

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()

 

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论

友情链接