• 摘要算法(哈希算法)


    摘要算法(哈希算法)

    • 摘要算法又称哈希算法,它表示输入任意长度的数据,输出固定长度的数据,相同的输入数据始终得到相同的输出,不同的输入数据尽量得到不同的输出。
    • 消息摘要算法分为三类
      • MD(Message Digest):消息摘要
        • 生成的消息摘要都是128位的,包括:MD2,MD4,MD5,从安全性上说:MD5 > MD4 > MD2
      • SHA(Secure Hash Algorithm):安全散列
        • 包括:SHA-1(160),SHA-2(SHA-224,SHA-256,SHA-384,SHA-512)
      • MAC(Message Authentication Code):消息认证码
        • 含有密钥的散列函数算法包含了MD和SHA两个系列的消息摘要算法HMAC只是在原有的MD和SHA算法的基础上添加了密钥融合了MD,SHA:
        • MD系列:HmacMD2,HmacMD4,HmacMD5SHA系列:HmacSHA1,HmacSHA224,HmacSHA256,HmacSHA38,HmacSHA51

    同过hashlib模块实现

    import hashlib
    
    md5 = hashlib.md5(b"yang")  # 加盐,最好是动态加盐,防止恶意碰撞
    data = "hello world"
    md5.update(data.encode('utf-8'))
    print(md5.hexdigest())
    

    同过hmac模块实现

    #hashlib模块实现了sha1,sha224,sha256,sha384,sha512,md5等算法,交易所的加密中一般使用sha256或md5
    import os
    import hmac
    import hashlib
    secret_key = b"yang"
    random_seq = os.urandom(32)
    hmac = hmac.new(secret_key,msg=random_seq,digestmod=hashlib.sha224)#secret_key相当于盐
    ret = hmac.digest()
    print(ret)
    

    相加一致性

    #字符串分开加密相加与单独是一致的
    import hashlib
    md5 = hashlib.md5() #加盐处
    md5.update("hello,yang".encode())
    print(md5.hexdigest())
    
    #两次输出的结果是一样的
    
    md5 = hashlib.md5() #加盐处
    md5.update("hello".encode())
    md5.update(",yang".encode())
    print(md5.hexdigest())
    
    记录学习的点点滴滴
  • 相关阅读:
    二叉树的节点删除
    PHP开启错误日志详细说明
    jsonpath模块
    Gunicorn-配置详解
    Vmware创建虚拟机步骤说明,详细配置解释
    Python multiprocessing使用详解
    Python定时任务框架apscheduler
    Access-Control-Allow-Origin跨域解决及详细介绍
    web安全:x-content-type-options头设置
    sqlalchemy的基本操作大全
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/14858781.html
Copyright © 2020-2023  润新知