zoukankan      html  css  js  c++  java
  • hashlib

    hashlib

    1,定义

    • hashlib:摘要算法/加密算法/哈希算法/散列算法

    • 定义:通过一个函数,把任意长度的数据按照一定规则转换为一个固定的长度的数据 串,通常用16进制的字符串表示

    • 特征要点:

      • bytes数据类型→通过hashlib算法→固定长度的字符串
      • 不同的bytes类型数据转化成的结果一定不同
      • 相同的bytes类型数据转化的结果一定相同
      • 此转化过程不可逆
    • import hashlib
      
      def file_check(file_path):
          with open(file_path,mode='rb') as f1:
              sha256 = hashlib.md5()
              while 1:
                  content = f1.read(1024)
                  if content:
                      sha256.update(content)
                  else:
                      return sha256.hexdigest()
      print(file_check('python-3.6.6-amd64.exe'))
      
      # f = open(r"F:s24day17python-3.6.6-amd64.exe","rb")
      # import hashlib
      # md5 = hashlib.md5()
      # while True:
      #     msg = f.read(1024)
      #     if msg:
      #         md5.update(msg)
      #     else:
      #         print(md5.hexdigest())
      #         break
      

    普通加密:MD5

    • 加密的内容

    • 将加密的内容转换成字节

    • MD5普通加密,传闻已被破解
      import hashlib
      md5 = hashlib.md5()								##初始化
      md5.update("david".encode('utf-8'))				##加密
      print(md5.hexdigest())							##合成
      print(len("172522ec1028ab781d9dfd17eaca4427"))
      
    • #/sha1()加密
      md5 = hashlib.sha1()
      md5.update("david".encode('utf-8'))
      print(md5.hexdigest())
      print(len("aa743a0aaec8f7d7a1f01442503957f4d7a2d634"))
      
    • # /sha256()高级加密
      # md5 = hashlib.sha256()
      # md5.update("david".encode('utf-8'))
      # print(md5.hexdigest())
      

    加盐加密

    1,固定的盐

    • md5 = hashlib.md5("hello world".encode('utf-8'))
      md5.update("david".encode('utf-8'))
      print(md5.hexdigest())
      

    2,动态的盐

    • user = input('username>>')
      pwd = input('password>>')
      md5 = hashlib.md5(user.encode('ust-8'))
      md5.update(pwd.encode('utf-8'))
      print(md5.hexdigest())
      

    文件的一次性校验

    • 依据hashlib的特征,hashlib也被用来验证文件一致性的重要工具

    • 同一个bytes数据用同样的加密方式转化程度结果一定相同,如果不同,加密方式转化程度结果一定是不同的

      • 文件较小(f.read)

      • def func(file):
            with open(file,mode='rb') as f1:
                ret = hashlib.md5()
                ret.update(f1.read())
                return ret.hexdigest()
        
        print(func('hashlib_file1'))
        
      • ###校验pycharm的一次性校验
        # f = open("./python-3.6.6-amd64.exe","rb")
        # import hashlib
        # md5 = hashlib.md5()
        # while True:
        #     msg = f.read(1024)
        #     if msg:
        #         md5.update(msg)
        #     else:
        #         print(md5.hexdigest())
        #         break
        
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    单元测试小示例
    分布式版本控制系统Git的安装与使用
    第一次作业:准备
    结对项目四则运算 “软件”之升级版
    个人项目 — 小学四则运算 “软件”之初版
    生命力
    .net 的前景
    力求简洁,应对变化
    现代软件工程 第一章 【概论】练习与讨论 第6题 邓杰
    现代软件工程 第一章 【概论】练习与讨论 第2题 邓杰
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033794.html
Copyright © 2011-2022 走看看