python md5加密列表_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()

你可能感兴趣的:(python,md5加密列表)