基于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