zoukankan      html  css  js  c++  java
  • hashlib模块的使用

    hashlib模块

    概念:
    对称加密: 数据加密解密使用相同的密钥
    非对称加密: 加密和解密用两把不同的密钥, 公钥用于加密数据,私钥用于解密数据
    单向加密: 只能加密数据,而不能解密数据

    hash: 散列函数,一般翻译为哈希,把的任意长度的数据,通过散列函数进行转化,变成一个长度固定的值(散列值), 这个值基本是唯一的,简单来说,hash算法就是一种将任意长度的数据变成一个长度固定的数据的函数
    特点: 1. 不可逆: 无法根据散列值来还原原来的数据
    2. 定长输出: 无论输入的原始数据有多长,结果长度是相同的
    3. 抗修改性: 输入的微小改变,哪怕只有一个字符,会引发结果的巨大改变
    4. 强碰撞性: 很难找到两段内容不同的数据,使他们产生hash值一致,几乎不可能

    hashlib模块API

    hashlib模块提供了许多供我们调用的hash算法,主要有:

    1. md5
    2. SHA系列: sha1, sha224, sha246, sha384, sha512
      hashlib.new(name, data=b)  生成一个hash对象
      hashlib.hash算法名(data=b)  生成一个使用该算法的hash对象
      hash对象.update(arg=None)   更新hash对象
      hash对象.digest()        返回hash算法计算得到的值(bytes类型)
      hash对象.hexdigest()    返回hash算法计算得到的值(str类型)
    
    # 注意: 二进制   # 所以要记得encode() 进行编码
    res = hashlib.md5('龙东成'.encode())
    print(res.hexdigest())    # hexdigest() 返回hash算法计算得到的值
    res2 = hashlib.sha256()
    res2.update('龙'.encode())   # update可以多次使用
    print(res2.hexdigest())
    
    # 其它使用方法类似
    
  • 相关阅读:
    使用logstash迁移elasticsearch
    cratedb 4.2.1单机安装
    es6.8.5集群部署(使用x-pack ssl方式)
    es从6.5升级到6.8(单节点)
    elasticsearch-6.8.5单机部署(当生产环境使用)
    mysql_upgrade升级(主从模式,先升级从库)
    mysql_upgrade升级(直接本地升级)
    主从数据不一致导出同步错误(从库记录存在导致写入报主键重复)
    12C下使用logminer
    mysql主库磁盘空间爆满导致从库错误
  • 原文地址:https://www.cnblogs.com/nichengshishaonian/p/10961359.html
Copyright © 2011-2022 走看看