基于hmac的密钥派生函数提取与扩展(hkdf)

hkdf的Python项目详细描述


此模块实现hmac密钥派生函数,定义于

http://tools.ietf.org/html/draft-krawczyk-hkdf-01

有两个接口:一个功能接口,具有单独的提取 和展开在草稿rfc中定义的函数,以及 这些功能。

功能接口

要使用函数接口,请传递生成的伪随机密钥 通过hmac_extract([salt], [input key material])hmac_expand(...)salt应该是随机的、非机密的、特定于站点的字符串,但可以是 设置为“无”。详情见香港发展基金草案第3.1条。

除了由hmac_extract()输出的prk外,hmac_expand()还接受 info参数,它允许基于 相同的prk和一个length参数,它定义字节数 要生成的输出关键材料的。length必须小于或等于 使用的哈希函数的块大小(字节)的255倍。 有关使用^{tt6}的详细信息,请参阅香港发展基金草稿第3.2节。$ 争论。

可以为hmac_extract()hmac_expand()作为hashkw参数,默认为sha-512 通过hashlib模块。无论是提取还是展开都必须相同。

示例:

from binascii import unhexlify
prk = hkdf_extract(unhexlify(b"8e94ef805b93e683ff18"), b"asecretpassword")
key = hkdf_expand(prk, b"context1", 16)

Hkdf包装类

要使用包装类,请用salt、input实例化Hkdf()类 密钥材料,以及可选的哈希函数。注意是默认的散列函数 对于包装类是sha-256,这与函数的默认值不同 接口。然后,您可以在hkdf实例上调用expand([info], [length])来 生成输出密钥材料:

kdf = Hkdf(unhexlify(b"8e94ef805b93e683ff18"), b"asecretpassword", hash=hashlib.sha512)
key = kdf.expand(b"context1", 16)

更改日志

  • 0.0.3–将文档从模块docstring移到readme.rst
  • 0.0.2–python 3.3、3.4支持
  • 0.0.1–初始版本

请在

https://www.github.com/casebeer/python-hkdf

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
并行处理java。util。同时发生的叉子在游泳池里。常见的并行性准则,用于选择正确的并行度大小   java如何将空白字符追加到指定长度?   安卓应用程序中出现错误,SSLHandshakeException,找不到证书路径的信任锚点   java如何使用JUnit Mockito验证检查方法是否未被调用   java如何使用不同的@RequestMapping解析多个控制器中的静态页面   Selenium中的javascript需要验证搜索结果   访问数据库SQLiteopenHelper方法时java应用程序崩溃(nullpointerexception)   在二叉树中验证最小堆时出现java空指针异常   Java 7的SSL连接失败   java用RestEasyWebTarget替换ProxyFactory不起作用   在Java应用程序中单击“否”按钮后,数组程序冻结(无响应)   数组中的前缀Java初学者前进和   Java HTML解析器,包括脚本标记和LineNumberReader   在java中为长类型数字加前导零   正则表达式无法映射正则表达式java。lang.IllegalArgumentException:模式段中捕获组的数量