最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python常用模块之hashlib

    正文概述    2020-03-16   283

    Python常用模块之hashlib

    常用模块 - hashlib模块

    一、简介

    Python的hashlib提供了常见的摘要算法,如MD5、SHA1、SHA224、SHA256、SHA384、SHA512等算法。

    什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

    举个例子,你写了一篇文章,内容是一个字符串“how to use python hashlib – by mayi”,并附上这篇文章的摘要是“75b850b26f4e75b1ad3db76a255065f2”。如果有人篡改了你的文章,并发表为“how to use python hashlib – by bob”,你可以一下子指定bob篡改了你的文章,因为根据“how to use python hashlib – by bob”计算出的摘要不同于原始文章的摘要。

    二、md5加密

    import hashlib
    hash = hashlib.md5()
    hash.update("mayi".encode("utf-8"))
    # 7d1080e20427559fcc0a647826741f66
    print(hash.hexdigest())

    三、sha1加密

    import hashlib
    hash = hashlib.sha1()
    hash.update("mayi".encode("utf-8"))
    # c159ce3114fb4553683cf96d91db6d51080c02e8
    print(hash.hexdigest())

    四、sha256加密

    import hashlib
    hash = hashlib.sha256()
    hash.update("mayi".encode("utf-8"))
    # 5dfae51e782cce2f213ef6bc89f75c9ab6c3bd8a5d1299a73191677cd5aa1f93
    print(hash.hexdigest())

    五、sha384加密

    import hashlib
    hash = hashlib.sha384()
    hash.update("mayi".encode("utf-8"))
    # a1eb5c52e830d5ea4fdb0a3dc2241374f56426aebacd8890a69c7db57724788ec5047a005ecff4a23310b7f87035926f
    print(hash.hexdigest())

    相关推荐:《Python视频教程》

    六、sha512加密

    import hashlib
    hash = hashlib.sha512()
    hash.update("mayi".encode("utf-8"))
    # 93102ec5658f739c060e3d82096e538ec116d0c9d6925119b465f0823be99697056518465cc6fe75265deb26632c8ce62b3d63a8782c492
    daac2b9c03a89defe
    print(hash.hexdigest())

    七、“加盐”加密

    以上的加密算法虽然很厉害,但仍然存在缺陷,通过撞库可以反解。所以必要对加密算法中添加自定义key再来做加密。

    import hashlib
    hash = hashlib.md5('python'.encode('utf-8'))
    hash.update("mayi".encode("utf-8"))
    # b0758ad1aad20530044668775f389922
    print(hash.hexdigest())

    八、摘要算法应用

    摘要算法能应用到什么地方?举个常用的例子:

    任何允许用户登录的网站都会存储用户登录的用户名和密码。如何存储用户名和密码呢?方法是存到数据库表中:

    Python常用模块之hashlib

    如果以明文保存用户密码,如果数据库泄露,所有用户的密码就落入到黑客的手里。此外,网站运维人员是可以访问数据库的,也就是能获取到所有用户的密码。

    正确的保存密码的方式是不存储用户的明文密码,而是存储用户密码的摘要,比如MD5:

    Python常用模块之hashlib

    当用户登录时,首先计算用户输入的明文密码的MD5,然后和数据库存储的MD5比较,如果一致,说明密码输入正确,否则,密码输入错误。

    存储MD5的好处是即使运维人员能访问数据库,也无法获知用户的明文密码。

    采用MD5存储密码是否就一定安全呢?也不一定。假设你是一个黑客,已经拿到存储MD5密码的数据库,如何通过MD5反推用户的明文密码呢?暴力破解费时费力,真正的黑客是不会这么干的。

    考虑这么个情况,很多用户喜欢用“123456”、“888888”、“password”等这些简单的密码,于是,黑客可以事先计算出这些常用的密码的MD5值,得到一个反推表。这样,无需破解,只需要对比数据库的MD5,黑客就获得了使用常用密码的用户账号信息。

    对于用户来讲,当然不要使用过于简单的密码。但是,我们能否在程序设计上对简单的密码加强保护呢?

    由于常用密码的MD5值很容易被反推出来,所以,要确保存储的用户密码不是那些已经被计算出来的常用密码的MD5就好了,这一方法通过对原始密码加一个复杂字符串来实现,俗称“加盐”。


    起源地下载网 » Python常用模块之hashlib

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元