summaryrefslogtreecommitdiff
path: root/bcrypt/__init__.py
blob: d75573653383f013100227c97f8c930bc05638a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""OpenBSD Blowfish password hashing.

This module implements the OpenBSD Blowfish password hashing
algorithm, as described in "A Future-Adaptable Password Scheme" by
Niels Provos and David Mazieres.

This system hashes passwords using a version of Bruce Schneier's
Blowfish block cipher with modifications designed to raise the cost
of off-line password cracking. The computation cost of the algorithm
is parametised, so it can be increased as computers get faster.

Passwords are hashed using the hashpw() routine:

  hashpw(password, salt) -> hashed_password

Salts for the the second parameter may be randomly generated using the
gensalt() function:

  gensalt(log_rounds = 12) -> random_salt

The parameter "log_rounds" defines the complexity of the hashing. The
cost increases as 2**log_rounds.
"""

import os
from _bcrypt import *

def gensalt(log_rounds = 12):
	"""Generate a random text salt for use with hashpw(). "log_rounds"
	defines the complexity of the hashing, increasing the cost as
	2**log_rounds."""
	return encode_salt(os.urandom(16), min(max(log_rounds, 4), 31))