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模块介绍 总结 参考文档 提 ...
随机推荐
- HTTP 代理服务器技术选型之旅
HTTP 代理服务器技术选型之旅 背景 长期以来,贴吧开发人员多,业务耦合大,需求变化频繁,因此容易产生 bug.而我所负责的广告相关业务,和 UI 密切相关,一旦因为某种原因(甚至是被别人改了代码) ...
- HBase操作(Shell与Java API)
版权声明:本文为博主原创文章,未经博主允许不得转载. 转: http://blog.csdn.net/u013980127/article/details/52443155 下面代码在Hado ...
- 【教程】ubuntu中配置tftp
1. 安装 tftpd ( tftp 服务器). tftp ( tftp 客户端)以及 xinetd (超级服务器) 1. 安装 tftpd ( tftp 服务器). tftp ( tftp 客户端) ...
- vue中创建全局单文件组件/命令
1.在 vue中如果我们使用基于vue.js编写的插件,我们可以使用Vue.use() 如在main.js中: 2.添加全局命令,让每个vue单文件组件都可以使用到: 第一步:最好建一个全局的命令文件 ...
- spark提示Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot be cast to [Lscala.collection.immutable.Map;
spark提示Caused by: java.lang.ClassCastException: scala.collection.mutable.WrappedArray$ofRef cannot b ...
- Is there a way to get a Cursor from a GreenDao Query object?
转:http://stackoverflow.com/questions/13584876/is-there-a-way-to-get-a-cursor-from-a-greendao-query-o ...
- 【造轮子】MFC实现BlockingQueue
最近任务需要在MFC下做多线程生产者消费者模式的东西,我找了半天貌似MFC没有类似Java里面BlockingQueue那样的工具(也许是我手残没找到). 网上好像也有很多大佬去实现这个.但是我没仔细 ...
- PTS无法同步
最近在使用PTS的时候,一直重现PTS无法同步的情况,一直显示No block source available,在查了中英各种帖子之后,终于解决了这个问题,下面是解决的办法. 在windows下运行 ...
- spidev 驱动 probe 获取 dts 节点参数
一. 尝试在 spi 驱动里边读取 设备树里面 节点的信息 // dts 里面的参数配置 503 &spi0 { 504 status = "okay"; 505 pinc ...
- 【随记】Q号解除限制一波三折
平日里养了一批QQ号码,前段时间部分号码出问题了,在一个不可能是我登录的时间登录了,而且还异常操作了.结果,被QQ安全中心关进了小黑屋,让我发送手机短信去领回来.这是事情的背景,不细述了. 这个事情的 ...