用Python实现MD5加密

本文介绍了如何使用Python的hashlib模块实现MD5加密,并指出尽管MD5不可逆,但由于空间限制存在碰撞风险。为提高密码安全性,文中提到使用Salt值和随机化策略来防止字典式破解。
摘要由CSDN通过智能技术生成

用Python实现MD5加密

用Python实现MD5加密时用到的是hashlib模块,可以通过hashlib标准库使用 多种Hash算法,如SHA1 、SHA224 、SHA256 、SHA384 、SHA512和MD5算法   等。下面是通过调用hashlib模块对字符串进行MD5加密的简单实例:

 

from hashlib import md5

def encrypt_md5(s) :

new_md5 = md5()       # 创建md5对象

new_md5 .update(s .encode(encoding= 'utf-8 '))

return new_md5 .hexdigest()

if __name__ == '__main__ ' :

print(encrypt_md5( 'ms08067 .com '))

运行结果:

0961f18e7a720a53797aa038c9c643d1

通过在线工具验证,结果如图6-15所示。

effaf844063947808bd9dd11884c9a68.png

图6-15    MD5在线加密的结果

虽然MD5为单向Hash加密,且不可逆,但根据鸽巢原理,MD5算法所产生的 32位输出所能够表示的空间大小为1632 ,即当样本大于1632时就会产生Hash碰

撞。由这一结论可知,我们可以生成大量密码样本的Hash ,得到密码和Hash值的

 

 

 

 

一一对应关系,然后根据这个对应关系反查,就可以得到Hash值所对应的密码。 在互联网应用方面,有相当多的用户使用弱密码,因此可以根据统计规律建立简 单密码所对应的MD5值表,从而得到使用简单密码的用户账户。

鉴于存在以上安全性问题,可以在用户密码被创建时生成一个随机字符串  (称之为Salt )与用户口令连接在一起,然后再用散列函数对这个字符串进行   MD5加密。如果Salt值的数目足够大,它实际上就消除了对常用口令采用的字典 式破解,因为攻击者不可能在数据库中存储那么多Salt和用户密码组合后的MD5 值。当然,更加安全的做法是,给每个密码设置一个随机的Salt值,这样即使通 过暴力枚举破解了一个用户的密码,也很难再破解其他用户的密码。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值