Skip to main content

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

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

backports.pbkdf2-0.1.tar.gz (9.9 kB view details)

Uploaded Source

File details

Details for the file backports.pbkdf2-0.1.tar.gz.

File metadata

File hashes

Hashes for backports.pbkdf2-0.1.tar.gz
Algorithm Hash digest
SHA256 6d342adb73dd86396b7c604f6da473bf98eb5356e68b99c913a30a5e64832e03
MD5 a818df09939f1fffacd0b04ab381b3a8
BLAKE2b-256 d03236174bcfe19964e7baf7dd592b4ef8b1df5f54c3996264d6e366c8050c03

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page