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
        
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    【转】Yeoman自动构建 Angularjs 项目
    【转】jquery的extend和fn.extend
    Centos查看已经安装的软件或者包
    Big Boss
    利用防火墙实现向外网提供内网web和dns服务
    从浏览器控制和管理 Android 及iOS设备 stf
    python 3 解决 ERROR: Could not find a version that satisfies the requirement xxx 的问题
    一直在说高并发,多少QPS才算高并发?
    压力/负载/性能(强度、容量、稳定性)测试之异同
    CPU利用率、内存利用率、磁盘IO、网卡负载解读和学习
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033794.html
Copyright © 2011-2022 走看看