适用于Python 2.6 - 3.4的快速PBKDF2
项目描述
这是Python 2.6到2.7的hashlib.pbkdf2_hmac的向后移植。实现包括纯Python实现和依赖于OpenSSL的C模块。C代码没有将PKCS5_PBKDF2_HMAC包装,因为其实现不是最优的。
用法
>>> from backports.pbkdf2 import pbkdf2_hmac, compare_digest >>> dkey = pbkdf2_hmac('sha1', passwordbytes, saltbytes, iterations=100000) >>> compare_digest(dkey, originalkey) True
pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None)
- hash_name
作为字符串的摘要算法名称
- password
密码作为字节、bytearray或类似字节对象 (*)
- salt
盐作为字节、bytearray或类似字节对象 (*)。盐应使用类似于os.urandom()的CPRNG生成。您绝对不应该使用random.random()。大约16字节似乎是一个不错的选择。
- iterations
轮数,100,000轮SHA-1在现代CPU上大约需要30ms。
- dklen
派生密钥的长度(默认为摘要大小)
- 返回
派生密钥作为字节
(*) 在Python 2.6中不支持bytearray和类似字节对象
基准测试
密码长度 |
10 |
100 |
500 |
1000 |
---|---|---|---|---|
backports.pbkdf2 C |
0.314 |
0.321 |
0.310 |
0.310 |
backports.pbkdf2 Py |
0.838 |
0.847 |
0.853 |
0.913 |
pbkdf2_ctypes 0.99.3 |
0.554 |
0.663 |
0.954 |
1.344 |
pbkdf2 1.3 |
5.235 |
5.746 |
6.155 |
6.450 |
Django pbkdf2 1.5.4 |
1.976 |
2.430 |
2.676 |
3.078 |
PyCrypto 2.6.1 |
6.903 |
9.062 |
9.518 |
10.274 |
- 算法
sha1
- 轮数
50000
- dklen
20
- 盐长度
16
- 每测试运行的次数
10
- Python
Linux AMD64上的Python 3.3
- 处理器
Intel i7-2860QM @ 2.50GHz
变更日志
pbkdf2 0.1
发布日期:2013年10月19日
backports.pbkdf2的首次发布
项目详情
backports.pbkdf2-0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6d342adb73dd86396b7c604f6da473bf98eb5356e68b99c913a30a5e64832e03 |
|
MD5 | a818df09939f1fffacd0b04ab381b3a8 |
|
BLAKE2b-256 | d03236174bcfe19964e7baf7dd592b4ef8b1df5f54c3996264d6e366c8050c03 |