码迷,mamicode.com
首页 > 其他好文 > 详细

hashlib

时间:2019-12-13 10:54:33      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:hello   port   cti   重要   哈希   open   hex   进制   path   

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:\s24\day17\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
    

普通加密: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
      

hashlib

标签:hello   port   cti   重要   哈希   open   hex   进制   path   

原文地址:https://www.cnblogs.com/daviddd/p/12033794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!