Go to file
Alex Gaynor 4c173b52ac Merge pull request #18 from dstufft/use-tox
Use tox to handle the testing and enable coverage
2014-12-05 17:43:28 -08:00
bcrypt Switch to using six 2014-12-05 20:25:15 -05:00
tests Switch to using six 2014-12-05 20:25:15 -05:00
.gitignore Fix the syntax of .gitignore 2014-12-05 20:08:35 -05:00
.travis.yml Switch to using tox to run our tests and expect PyPy to pass 2014-12-05 20:29:48 -05:00
LICENSE Initial import 2013-05-10 22:06:18 -04:00
MANIFEST.in Package the bcrypt library 2013-05-10 23:10:18 -04:00
README.rst Fixed the travis link in the readme 2013-11-15 07:07:53 -08:00
requirements.txt Add tests to ensure behavior 2013-05-10 23:44:58 -04:00
setup.py Switch to using six 2014-12-05 20:25:15 -05:00
tox.ini We don't need this optimization in the bcrypt test suite 2014-12-05 20:35:18 -05:00

bcrypt
======

.. image:: https://travis-ci.org/pyca/bcrypt.png?branch=master
    :target: https://travis-ci.org/pyca/bcrypt

Modern password hashing for your software and your servers


Installation
============

To install bcrypt, simply:

.. code:: bash

    $ pip install bcrypt


Usage
-----

Basic
~~~~~

Hashing and then later checking that a password matches the previous hashed
password is very simple:

.. code:: pycon

    >>> import bcrypt
    >>> password = b"super secret password"
    >>> # Hash a password for the first time, with a randomly-generated salt
    >>> hashed = bcrypt.hashpw(password, bcrypt.gensalt())
    >>> # Check that a unhashed password matches one that has previously been
    >>> #   hashed
    >>> if bcrypt.hashpw(password, hashed) == hashed:
    ...     print("It Matches!")
    ... else:
    ...     print("It Does not Match :(")


Adjustable Work Factor
~~~~~~~~~~~~~~~~~~~~~~
One of bcrypt's features is an adjustable logarithmic work factor. To adjust
the work factor merely pass the desired number of rounds to
``bcrypt.gensalt(rounds=12)`` which defaults to 12):

.. code:: pycon

    >>> import bcrypt
    >>> password = b"super secret password"
    >>> # Hash a password for the first time, with a certain number of rounds
    >>> hashed = bcrypt.hashpw(password, bcrypt.gensalt(10))
    >>> # Check that a unhashed password matches one that has previously been
    >>> #   hashed
    >>> if bcrypt.hashpw(password, hashed) == hashed:
    ...     print("It Matches!")
    ... else:
    ...     print("It Does not Match :(")


Compatibility
-------------

This library should be compatible with py-bcrypt and it will run on Python
2.6, 2.7, 3.2, 3.3 and PyPy 2.0.