用Python实现MD5加密

用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所示。

用Python实现MD5加密_第1张图片

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

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

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

 

 

 

 

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

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

 

 

你可能感兴趣的:(笔记)