Python——hmac
该模块在Python中实现 RFC 2104 中规范的 HMAC 算法。
目录
一、HMAC 对象
- hmac.new(key[, msg[, digestmod]])
- 返回一个新的 hmac 对象。如果提供了 msg ,该方法调用 update(msg) 。 digestmod 是 HMAC 对象将要使用的摘要构造器或模块。 缺省为 hashlib.md5。
HMAC 对象有以下方法
1.
- HMAC.update(msg)
- 用 string 参数 msg 来更新 HMAC 对象。重复调用该方法等价于一次调用该方法,但传入所有参数按调用的顺序连接的值。即 m.update(a); m.update(b) 等价于 m.update(a + b)。
- 2.
- HMAC.digest()
- 返回到目前为止传递给 update() 方法的字符串的摘要(字节串)。这个字串和传给构造器的 digest 的 digest_size 一样长,可能会包括非 ASCII 字符,包括 NUL 字节。
- 警告:
- 当比较 digest() 的结果和外部提供的两个摘要时,建议使用 compare_digest() 函数而不是 “==” 操作符,这样可以降低定时攻击(timing attack)的风险。
-
- 3.
- HMAC.hexdigest()
- 就像 digest() 一样,除了返回一个 digest() 的结果两倍长的只包含十六进制数的摘要。可以应用于一些非二进制的环境中。
- 警告:
- 当比较 digest() 的结果和外部提供的两个摘要时,建议使用 compare_digest() 函数而不是 “==” 操作符,这样可以降低定时攻击(timing attack)的风险。
- 4.
- HMAC.copy()
- 返回 HMAC 对象的拷贝,可以有效地计算某些具有相同子串的字符串的摘要。
二、辅助函数
- hmac.compare_digest(a, b)
- 返回 a == b. 该函数通过禁止基于内容的短路(short circuiting)行为来阻止定时分析(timing analysis),从而适用于密码学。 参数中的 a 和 b 必须是相同类型的,要么是 unicode 要么是一个类字节对象(bytes-like object)。
- 注意:
- 如果 a 和 b 的长度不同,或者一个错误发生,定时攻击理论上可以得知 a 和 b 的长度和类型,但是不能获得它们的值。
- (Python 2.7.7 后引入)
Python——hmac的更多相关文章
- php hash_hmac 与python hmac 区别
使用 HMAC 方法生成带有密钥的哈希值 hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = fal ...
- python hmac解密
import hmac def get_singa_true(timestamp): sha1 = hmac.new("d1b964811afb40118a12068ff74a12f4&qu ...
- python hmac 加密
python2 : key 是秘钥 类型为 str msg 要加密的文件 str digestmod 要加密的方式 python3: key 是秘钥 类型为 byte msg 要加密的文件 byte ...
- HMAC(Hash-based Message Authentication Code)实现原理
1.HMAC 概念 HMAC(Hash-based Message Authentication Code)基于 hash 的消息验证码,是 安全通信中必要的组成部件. 主要是 防止消息被篡改,和对称 ...
- python 内置模块之hashlib、hmac、uuid
一.hashlib md5和sha算法通过消息摘要算法生成定长的消息摘要,消息摘要算法是不可逆的.但同一段消息通过摘要算法后得到的值是一样的,可一通过比对消息摘要验证数据的完整性. sha算法比MD5 ...
- Python之数据加密与解密及相关操作(hashlib模块、hmac模块、random模块、base64模块、pycrypto模块)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
- 【Python】 hash值计算 hashlib & hmac
hashlib & hmac *不是很清楚能不能把这种hash值取样算法称之为加密,但是似乎好像也是这么说的哈(非科班出身的野路子就是没这种基本知识的) ■ 基本用法 hashlib支持MD5 ...
- python模块:hmac
"""HMAC (Keyed-Hashing for Message Authentication) Python module. Implements the HMAC ...
- Python之数据加密与解密及相关操作(hashlib、hmac、random、base64、pycrypto)
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提 ...
随机推荐
- 采用alluxio提升MR job和Spark job性能的注意点
1. 介绍 2. 实验说明 2.1 实验环境 2.2 实验方法 2.3 实验负载 3. MapReduce on alluxio 3.1 读取10G文件(1G split) 3.2 读取20G文件(1 ...
- ubuntu下安装与卸载软件方法
http://www.cnblogs.com/JamyWong/archive/2009/11/19/1606442.html 1.通过deb包安装的情况:安装.deb包:代码:sudo dpkg - ...
- MySQL字段数据全部查出【只保留中文、英文、数字、空格的词表】
select * from xxx_xxx_bak where slot_type_id in ('xxx', 'xxx') ; by @大超超 记录备查
- LeetCode: 【L4】N-Queens 解题报告
[L4]N-Queens 解题报告 N-Queens Total Accepted: 16418 Total Submissions: 63309 My Submissions The n-queen ...
- LeetCode: Palindrome Partitioning 解题报告
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- idea 项目添加web支持
选中项目添加 add - web
- eclipse jetty 请求的操作无法在使用用户映射区域打开的文件上执行
使用jetty debug代码启动 在eclipse中进行运行调试,碰到无法编辑保存webapp下的文件 提示: 请求的操作无法在使用用户映射区域打开的文件上执行 解决方法: 从 jetty 7 ...
- sscanf函数——强大的C语言库函数
这个函数真的很强大,这篇随笔也将一直更新一些总结,直到涵盖大多数应用: eg1: 今天公司项目中从云端获取了一段字符串---"+CBC: 0,90,4090" 我想获取其中的数字0 ...
- C#中的Partial
Partial关键词定义的类可以在多个地方被定义,最后编译的时候会被当作一个类来处理. 首先看一段在C#中经常出现的代码,界面和后台分离,但是类名相同. public partial class Fo ...
- mongo源码学习(二)db.cpp之mongoDbMain方法分析
mongo后台进程的入口:mongo/src/mongo/db/dbmain.cpp,wmain(for windows)和main函数,main函数也很简单,就是委托给db.cpp中的mongoDb ...