关于python hashlib模块的MD5加密问题

在做一个小项目过程中,踩到了MD5类的小坑。

需求是读取用户名称和密码,将密码经MD5加密发送给服务端。

考虑到可能会重复输入的问题,所以开始想定义一个全局的MD5实例,然后定义一个MD5生成器来获取加密串,代码如下:

M = hashlib.md5()
def MD5(word):
    M.update(word.encode(encoding='utf-8'))
    return M.hexdigest()

后来在使用过程中发现,当我出入密码错误想重新输入时,返回的是错误的加密串,起先以为是数据库验证问题。后来发现服务器端验证的数据就是错的。后来考虑到有一个MD5加密的环节,经验证,果不其然是md5.upadte()方法的坑。最后重复创建实例解决了问题。

 

def MD5(M,word):
    M.update(word.encode(encoding='utf-8'))
    return M.hexdigest()
PWD = PWD.get()
print(NAME, PWD)
M = hashlib.md5()
MD5(M, PWD)

PS:md5.update()方法并没有覆盖初始值,而是通过拼接修改加密信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值