• python模块hmac,hmac哈希算法库


    一、简介

    hmac模块是Python标准库中的一个模块,用于计算消息的HMAC(基于哈希的消息认证码)。下面是hmac模块的介绍以及其优点和缺点:
    优点:
    1.安全性:HMAC结合了哈希函数和密钥,提供了更强的安全性,可以有效防止常规的哈希碰撞和长度扩展攻击。
    2.灵活性:hmac模块支持多种哈希算法,例如MD5、SHA-1、SHA-256等,可以根据需要选择适合的算法。
    3.简单易用:使用hmac模块计算HMAC值的步骤相对简单,只需提供密钥和消息即可。
    缺点:
    1.性能:由于HMAC需要进行额外的密钥扩展和哈希计算,相对于普通的哈希算法,它可能会稍微降低计算性能。但在大多数情况下,这种性能损失是可以接受的。
    hmac模块提供了计算HMAC的功能,可以在数据传输和存储过程中用于验证数据的完整性和真实性。它是一种安全可靠的消息认证机制,使用简单,并支持多种哈希算法。但需要注意的是,选择合适的哈希算法和密钥长度对于确保安全性非常重要。

    二、加解密方法
    1. hmac.new(key, msg=None, digestmod=‘’):该函数用于创建一个HMAC对象,用于计算消息的HMAC值,返回哈希对象
    • key:是用于计算HMAC的密钥,必须是字节串。
    • msg:是要计算HMAC的消息,也必须是字节串。如果不提供msg参数,则可以在之后使用update()方法添加消息。
    • digestmod:是一个可选参数,指定要使用的哈希算法,默认为’',表示使用MD5哈希算法。可以使用hashlib模块中的哈希算法名称,md5、sha1、sha224、sha256、sha384、sha512、blake2b、blake2s、sha3_224、sha3_256、sha3_384、sha3_512、hake_128、shake_256
    import hmac
    
    key = b'my_secret_key'
    message = b'Hello, world!'
    
    hmac_md5 = hmac.new(key, message, digestmod='md5')
    
    hmac_md5.update('hello'.encode('utf-8'))
    print('十六进制哈希值:',hmac_md5.hexdigest())
    print('十六字节哈希值:',hmac_md5.digest())
    print('哈希算法的分块大小:',hmac_md5.block_size)
    print('哈希算法的哈希值大小:',hmac_md5.digest_size)
    print('算法名称:',hmac_md5.name)
    print('拷贝当前哈希对象:',hmac_md5.copy())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. hmac.digest(key, msg, digest):该函数用于计算给定密钥和消息的HMAC值,返回字串节对象
    • key:是用于计算HMAC的密钥,必须是字节串。
    • msg:是要计算HMAC的消息,也必须是字节串。
    • digest:是一个哈希算法对象,可以使用hashlib模块中的加密函数,例如:hashlib.md5
    import hmac
    import hashlib
    
    key = b'my_secret_key'
    message = b'Hello, world!'
    
    hmac_md5 = hmac.digest(key, message, hashlib.md5)
    
    print('十六进制哈希值:',hmac_md5.hex())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. hmac.compare_digest(a, b):该函数用于比较两个字节串的内容是否相等
    import hmac
    
    a = b'abc'
    b = b'abc'
    
    result = hmac.compare_digest(a, b)
    
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    Golang Struct 继承的深入讨论和细节
    SPARKSQL3.0-源码剖析全流程导读
    Python实现基于用户的协同过滤推荐算法构建电影推荐系统
    Mistral AI:探索LLM推理的吞吐、时延及成本空间
    ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计
    聊聊Vuex原理
    三角函数概述
    java流程程序控制
    c语言实现三子棋
    【Unity】TimeLine系列教程——编排剧情!
  • 原文地址:https://blog.csdn.net/randy521520/article/details/134210670