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
        
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    【Centos7】卸载OpenJDK
    linux 网络测试命令 长期更新
    【Centos7】hostnamectl 设置主机名
    【VMware Workstation】虚拟机静态IP NAT连接外部网络(局域网以及广域网)
    【VMware Workstation】虚拟机动态IP NAT连接外部网络(局域网以及广域网)
    【刷题】BZOJ 4698 Sdoi2008 Sandy的卡片
    【刷题】BZOJ 1717 [Usaco2006 Dec]Milk Patterns 产奶的模式
    【刷题】洛谷 P3809 【模板】后缀排序
    【刷题】BZOJ 2038 [2009国家集训队]小Z的袜子(hose)
    【刷题】洛谷 P2709 小B的询问
  • 原文地址:https://www.cnblogs.com/daviddd/p/12033794.html
Copyright © 2011-2022 走看看