好久没更博客了,最近做了一些web的项目,深深体会到了MD5在python中进行密码验证的优点,那么今天就来聊一下python中的MD5吧。

MD5(Message-Digest Algorithm 5) 模块用于计算信息密文(信息摘要),得出一个128位的密文。在python2中有MD5模块,可以生成MD5。

import md5
test='hello everyone'
m=md5.new()
m.update(test.encode(encoding='utf-8'))
print(m.hexdigest())

到了python3移除了MD5模块,由于MD5加密也是hash加密的一种,因此将md5也放在了hashlib库中,使用md5时进行加密操作时,便导入的是hashlib库。

import hashlib
test='hello everyone'#待加密信息
m=hashlib.md5()#创建md5对象
#注意最好不要直接写m.update(test),若出现中文会报错,为了保证不报错最好加上编码格式
m.update(test.encode(encoding='utf-8'))
result=m.hexdigest()
print('加密前:',test)
print('加密后:',result)

 结果如下:

python md5 中文 python中的md5_验证

封装python3下的md5 加密

在实现注册,登录界面时进行密码验证非常好用

import hashlib
def setPassword(password):
    md5=hashlib.md5()
    md5.update(password.encode())
    result=str(md5.hexdigest())
    return result

可能大家看过上面的代码会对一些方法有疑问,下面小编为大家一一解答。

hashlib.new(name[,data])

   name:hash加密算法的名称,如md5,sha1,blake2b等等,由于在python2中md5是一个独立模块,因此md5.new()是用来创建对象的。

   data :需要加密的数据,如test,但在这里我没有使用hashlib.new(),我将数据放在了update里,一般都是放在update里的,这里可以忽略。

同时,我直接一开始就是用了hashlib.md5()来创建对象,已经很明确我是使用md5加密方法,因此这个hashlib.new()也没有太呆的用处了。

hashlib.md5().update(arg)

传入arg对象来更新hash对象。这里的arg只能是byte类型,若是其他会报错,可在前面加b转换类型。

python md5 中文 python中的md5_加密_02

若重复调用此方法,会将传入的arg进行拼接,并不会将之前的arg覆盖掉。

情况一:

m.update(a);
m.update(b);
print(m)

情况二: 

m.update(a+b);
print(m)

 情况一等价于情况二

hashlib.md5().hexdigest()

将加密的结果以十六进制显示,还有digest()是将加密结果以二进制显示

import hashlib
test='hello everyone'
m=hashlib.md5()
m.update(test.encode(encoding='utf-8'))
result=m.hexdigest()
result2=m.digest()
print('加密前:',test)
print('十六进制加密后:',result)
print('二进制加密后:',result2)

python md5 中文 python中的md5_验证_03