Fast PBKDF2 for Python 2.6 - 3.4
Project description
This is a backport of hashlib.pbkdf2_hmac for Python 2.6 to 2.7. The implementation comes with a pure Python implementation and a C module that depends on OpenSSL. The C code does not wrap PKCS5_PBKDF2_HMAC as its implementation is suboptimal.
Usage
>>> 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
name of the digest algorithm as string
- password
password as bytes, bytearray or bytes-like object (*)
- salt
salt as bytes, bytearray or bytes-like object (*). The salt should be generated with a CPRNG like os.urandom(). You should never use random.random(). About 16 bytes seem to be a good choice.
- iterations
number of rounds, 100,000 rounds of SHA-1 take about 30ms on a modern CPU.
- dklen
length of the derived key (defaults to digest_size)
- returns
derived key as bytes
(*) bytearray and bytes-like objects are not supported on Python 2.6
Benchmarks
password length |
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 |
- algorithm
sha1
- rounds
50000
- dklen
20
- saltlen
16
- number of runs per test
10
- Python
Python 3.3 on Linux AMD64
- CPU
Intel i7-2860QM @ 2.50GHz
Changelog
pbkdf2 0.1
Release date: 19-Oct-2013
initial release of backports.pbkdf2
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file backports.pbkdf2-0.1.tar.gz
.
File metadata
- Download URL: backports.pbkdf2-0.1.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d342adb73dd86396b7c604f6da473bf98eb5356e68b99c913a30a5e64832e03 |
|
MD5 | a818df09939f1fffacd0b04ab381b3a8 |
|
BLAKE2b-256 | d03236174bcfe19964e7baf7dd592b4ef8b1df5f54c3996264d6e366c8050c03 |