• hashlib


    1.hashlib模块

    1)什么是摘要算法:主要特征是加密过程中不需要私密的钥匙;并且经过加密的文件不能被解密;只有输入相同的明文数据信息摘要算法才能得到相同的密文;适合分布式网络;

    Python的hashlib中常见的摘要算法为MD5,SHA1

    所以摘要算法又称哈希算法,散列算法,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常16进制的字符串的表示),是单向转换,不可逆;

    2)为什么要对文件加密:首先了解一个专业名词

      SQL注入:就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。例如一些影视网站的vip会员密码的泄露,大多都是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入;

    防治这种情况的几种方法:

    防治方案

    3)md5算法

    特点:对同一个字符串,每次运行的值都一样,对应不同字符串,对应的值一定不一样;

      是一个32位的字符串,每个字符都是一个十六进制,效率快,算法相对简单

    代码展示:

    import hashlib
    s = 'alex666'
    md5_obj = hashlib.md5()
    md5_obj.update(s.encode('utf-8'))
    res = md5_obj.hexdigest()
    print(res)
    #update里的参数必须是bytes类型的,

    4)sha1算法

    特点:跟md5一样,只是他是一个40位的字符串,算法相对复杂,安全性高,但是效率慢

    5)用户机密文件过程中牵扯的问题

    import hashlib
    username = input('>>>:')
    password = input('>>>:')
    md5_obj = hashlib.md5(username.encode('utf-8'))
    #动态加盐,把用户名作为一个参数与密码一起运算,形成加密文件,安全性高
    md5_obj.update(password.encode('utf-8'))
    res = md5_obj.hexdigest()
    print(res)

     6)文件的一致性校验

    a:文件下载和安装过程中,都会带一个md5的一个校验码,如果下载或安装过程中如果发生数据丢失,就不会安装或下载成功;

    b:文件校验的代码:

    import hashlib
    ret_file = os.path.dirname(__file__)
    autul_file1 = '/'.join([ret_file,'Admin','Teacher'])
    autul_file2 = '/'.join([ret_file,'Admin','Student'])
    md5_obj1 = hashlib.md5()
    with open(autul_file1,'rb')as f:
        md5_obj1.update(f.read())    #update方法参数必须为bytes类型,所以打开文件要用rb模式
        ret_ram = md5_obj1.hexdigest()
    
    md5_obj2 = hashlib.md5()      #要重新创建一个对象,一个对象对应一个加密值
    with open(autul_file2,'rb')as f1:  #这里要是字节模式,因为
        md5_obj2.update(f1.read())
        ret_ram2 = md5_obj2.hexdigest()
    print(ret_ram == ret_ram2 )
    print(ret_ram)
    print(ret_ram2)
    #结果:

    True
    4ff772b41b4067f9c2d047588232a09e
    4ff772b41b4067f9c2d047588232a09e

     

  • 相关阅读:
    C++——文件的读写
    我以我血荐轩辕——记徐家福教授的演讲
    文件命名
    面向对象
    关于函数
    php跨域发送请求原理以及同步异步问题
    关于iframe
    关于url
    cookie
    call和apply
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9452014.html
Copyright © 2020-2023  润新知