zoukankan      html  css  js  c++  java
  • day25 hashlib模块与configparser模块与logging模块 https://www.cnblogs.com/jin-xin/articles/9265561.html

    3.1 hashlib 加密,摘要算法.
        3.2 configparser 配置文件  了解!
            #配置文件:
            # 放置一些常用的变量,路径.
            # with open('hashlib_file')
            '''
            ;path1 = 'c:userapp01 user1表'
            ;path2 = 'c:userapp01 user2表'
            ;path3 = 'c:userapp01 user3表'
            ;PAI = 3.1415925
            ;LANGRAGE = 'CHINA'
            '''
        3.3 logging模块.
     
     
    1
    # hash: 算法, 结果是什么? 是内存地址,
    # print(hash('123'))
    # dic = {'name':'alex'}
    # print(hash('name'))
    # print(id('name'))
    # hashlib 模块 与加密相关,被称作 摘要算法.
    # 1,是一堆算法的合集,他包含很多算法(加密的).
    # 2,hashlib的过程就是将字符串转化成---->数字的过程.
    # 3,hashlib对相同的字符串转化成的数字相同.
    # 4,不同的电脑,对相同的字符串进行 加密 转化成的数字相同.
    # 用在哪里?
    # 密文(密码).
        # 将密码用算法加密放置到数据库,每次取出验证.
    # 文件的校验.
    1初识 hashlib
    import hashlib
    #md5 加密算法  常用算法, 可以满足一般的常用的需求
    #sha 加密算法  级别高一些, 数字越大级别越高,加密的效率越低,越安全.
    
    #md5
    # s1 = '12343254'
    # ret = hashlib.md5()  # 创建一个md5对象
    # ret.update(s1.encode('utf-8')) # 调用此update方法对参数进行加密 bytes类型
    # print(ret.hexdigest())  # 得到加密后的结果 定长
    #
    # s2 = 'alex12fdsl,.afjsdl;fjksdal;fkdsal;fld;lsdkflas;dkfsda;3'
    # ret = hashlib.md5()  # 创建一个md5对象
    # ret.update(s2.encode('utf-8')) # 调用此update方法对参数进行加密 bytes类型
    # print(ret.hexdigest())  # 得到加密后的结果 定长
    #
    # s3 = 'alex12fdsl,afjsdl;fjksdal;fkdsal;fld;lsdkflas;dkfsda;3'
    # ret = hashlib.md5()  # 创建一个md5对象
    # ret.update(s3.encode('utf-8')) # 调用此update方法对参数进行加密 bytes类型
    # print(ret.hexdigest())  # 得到加密后的结果 定长
    #
    # # 无论字符串多长,返回都是定长的数字,
    # # 同一字符串,MD5值相同.

    #闲人: 将你常用的密码 000000  111111   890425
    # #对应关系表:
    # # 000000     c108971251713ee7c59db5c097378018
    # # 撞库: 因为撞库,所以相对不安全,如何解决?
    # # 123456  e10adc3949ba59abbe56e057f20f883e

    s4 = '123456'
    # # ret = hashlib.md5()  # 创建一个md5对象
    # # ret.update(s4.encode('utf-8'))
    # # print(ret.hexdigest())  # e10adc3949ba59abbe56e057f20f883e
    #

    解决方式 加盐

    # s3 = '123456'
    # ret = hashlib.md5('@$1*(^&@^2wqe'.encode('utf-8'))  # 创建一个md5对象,加盐
    # ret.update(s3.encode('utf-8')) # 调用此update方法对参数进行加密 bytes类型
    # print(ret.hexdigest())  # 得到加密后的结果 定长  c5f8f2288cec341a64b0236649ea0c37
    如果黑客盗取到你的固定盐 '@$1*(^&@^2wqe'内容
    
    # 变成随机的盐:
    # username = '爽妹'
    # password = '123456'
    
    # ret = hashlib.md5(username[::-1].encode('utf-8'))
    # ret.update(password.encode('utf-8'))
    # print(ret.hexdigest())

    sha 系列

    hashlib.sha1()  #  sha1 与md5 级别相同,但是sha1比md5 更安全一些,
    # ret = hashlib.sha1()
    # ret.update('123456'.encode('utf-8'))
    # print(ret.hexdigest())  # 7c4a8d09ca3762af61e59520943dc26494f8941b
    
    # ret = hashlib.sha512()  #级别最高,效率低,安全性最大
    # ret.update('123456'.encode('utf-8'))
    # print(ret.hexdigest())  # ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8


    c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413

     文件的校验

     对于小文件可以,但是超大的文件内存受不了,(下面具体代码解决

    # def func(file_name):
    #     with open(file_name,mode='rb') as f1:
    #         ret = hashlib.md5()
    #         ret.update(f1.read())
    #         return ret.hexdigest()
    #
    # print(func('hashlib_file'))
    # print(func('hashlib_file1'))
    
    # s1 = 'I am 旭哥, 都别惹我.... 不服你试试'
    # ret = hashlib.md5()
    # ret.update(s1.encode('utf-8'))
    # print(ret.hexdigest())  # 15f614e4f03312320cc5cf83c8b2706f
    
    # s1 = 'I am 旭哥, 都别惹我.... 不服你试试'
    # ret = hashlib.md5()
    # ret.update('I am'.encode('utf-8'))
    # ret.update(' 旭哥, '.encode('utf-8'))
    # ret.update('都别惹我....'.encode('utf-8'))
    # ret.update(' 不服你试试'.encode('utf-8'))
    # print(ret.hexdigest())  # 15f614e4f03312320cc5cf83c8b2706f
    
    # def func(file_name):
    #     with open(file_name,mode='rb') as f1:
    #         ret = hashlib.md5()
    #         while True:
    #             content = f1.read(1024)
    #             if content:
    #                 ret.update(content)
    #             else:
    #                 break
    #         return ret.hexdigest()
    # print(func('hashlib_file'))
    # print(func('hashlib_file1'))
    
    # hashlib
    #用在 密文,或者文件的校验.
    # md5
        #普通的
        #加盐的
        #动态加盐的
    #sha 系列
        # 普通的
        # 加盐的
        # 动态加盐的
    #文件的校验:
        # 小文件
        # 大文件
  • 相关阅读:
    Django(进阶篇)之model
    RabbitMQ、Memcache、Redis(队列、缓存)
    AJAX总结
    数据库 MySql(二)
    Python操作mysql之SQLAchemy(ORM框架)
    Python操作Mysql
    Tornado框架
    Ubuntu 出现未定义的 curl_init 错误
    ubuntu下apache配置https且强制http转向为https 腾讯云
    Git fetch
  • 原文地址:https://www.cnblogs.com/daien522556/p/9287174.html
Copyright © 2011-2022 走看看