Python 入门之 内置模块 -- hashlib模块

系统 1533 0

Python 入门之 内置模块 -- hashlib模块

1、hashlib

摘要算法,加密算法

(1)主要用途:

<1> 加密 : md5 sha1 sha256 sha512

md5,加密速度快,安全系数低
sha512 加密速度慢,安全系数高

<2> 校验 : md5 sha1 sha256 sha512值

          
            import hashlib
          
        

(2)hashlib的特征以及使用要点:

<1> bytes类型数据 ---> 通过hashlib算法 ---> 固定长度的字符串

<2> 当要加密的内容相同时,得到的密文一定是一样的

<3> 当明文不一样时,密文不一定一样

<4> 转化过程不可逆

(3)md5加密:

<1> 普通加密:

          
            import hashlib
md5 = hashlib.md5()   # 初始化
md5.update("alex".encode("utf-8"))   # 将明文转换成字节添加到新初始化的md5中
print(md5.hexdigest())   # 进行加密
          
        
          
                    #现在可以进行简单的破解  -- 撞库
          
        

<2> 加盐加密 -- 提高安全性

加固定盐
          
            import hashlib
md5 = hashlib.md5("rimo_dsb".encode("utf-8"))   # 初始化
md5.update("alex".encode("utf-8"))   # 将明文转换成字节添加到新初始化的md5中
print(md5.hexdigest())   # 进行加密
          
        
加动态盐
          
            import hashlib
user = input("username:")
pwd = input("password:")

md5 = hashlib.md5(user.encode("utf-8"))   # 初始化
md5.update(pwd.encode("utf-8"))   # 将明文转换成字节添加到新初始化的md5中
print(md5.hexdigest())   # 进行加密
          
        

中文内容编码不同时密文是不一致的,英文的

          
            import hashlib
sha1 = hashlib.sha1()
sha1.update("日魔就是一个大SB".encode("utf-8"))
print(sha1.hexdigest())

sha1 = hashlib.sha1()
sha1.update("日魔就是一个大SB".encode("gbk"))
print(sha1.hexdigest())
          
        

(3)文件的一致性校验:

​ 如何验证我们下载的资源是否有病毒呢?这就需要文件的一致性校验了。在我们下载一个软件时,往往都带有一个MD5或者shax值,当我们下载完成这个应用程序时你要是对比大小根本看不出什么问题,你应该对比他们的md5值,如果两个md5值相同,就证明这个应用程序是安全的,如果你下载的这个文件的MD5值与服务端给你提供的不同,那么就证明你这个应用程序肯定是植入病毒了(文件损坏的几率很低)

例如: 校验Pyhton解释器的Md5值是否相同
          
            import hashlib
def file_check(file_path):
    with open(file_path,mode='rb') as f1:
        md5= hashlib.md5()
        while True:
            content = f1.read(1024)   # 2049 1025 1
            if content:
                md5.update(content)
            else:
                return md5.hexdigest()
print(file_check('python-3.6.6-amd64.exe'))
          
        

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论