Wrapper around python-bcrypt to provide simple access to the future-proof BCrypt algorithms, for password hashing.
>>> from bkrypt import Password
>>> p = Password.create('my secret password')
>>> print(p)
$2a$04$I2KuvSCq4pF/xJeSieLcsO.xs204lqy1IuakktiI/PZxv7OwIAoWS
To get the hash string out, use p.hash
or str(p)
.
>>> from bkrypt import Password
>>> p = Password('$2a$04$I2KuvSCq4pF/xJeSieLcsO.xs204lqy1IuakktiI/PZxv7OwIAoWS')
>>> p == 'foo'
False
>>> p == 'my secret password'
True
Note that generating a password hash for the same password will result in different hashes every time:
>>> for i in range(0, 3):
... p = Password.create('my secret password')
... print(p)
...
$2a$04$eddbs9i/v3xuVei.d0CPaOL7g3spzxJ/z0.naES1jjI77kFpinvfK
$2a$04$E0hc67qJ8A1xOf4IdkKpteM5o1A7sQE7PvgaC1j1HgDAXkJUagQhS
$2a$04$AYPR70TyYUXN5A9Cl6wYn.ScDSGQYPwYgi.ZkBPvkI8SOQSrF.d.u
To generate stronger hashes, use increased strength (12 is default). Both generating and checking then takes significantly longer, by the very design of the BCrypt algorithm, that is.
>>> p = Password.create('my secret password', strength=15)
$2a$15$3LyRjuAzvX7i8uvFbwOk4ueZ0YrS4jAj3RiRsqBX5XTJlIRJrqDZ2
The usual stuff.
$ pip install bkrypt