backports.pbkdf2 0.1

Creator: coderz1093

Last updated:

Add to Cart

Description:

backports.pbkdf2 0.1

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

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.