Go to file
2019-10-27 18:50:41 +01:00
.azure-pipelines Add AP wheel builder 2019-10-19 12:25:10 +02:00
.github Update links 2019-10-27 18:42:14 +01:00
docs Update links 2019-10-27 18:42:14 +01:00
extras Update bindings 2019-07-02 11:00:29 +02:00
src/argon2 Prepare 19.2.0 2019-10-27 18:50:41 +01:00
tests Disable deadline on test_argument_ranges (#52) 2019-06-03 16:21:47 +02:00
.coveragerc Fix coverage reporting 2018-03-17 12:12:50 +01:00
.gitignore Consistently use canonical name 2019-06-05 12:37:58 +02:00
.gitmodules Move libargon2 into extras dir too 2015-12-11 14:06:04 +01:00
.pre-commit-config.yaml update black link 2019-10-27 18:45:35 +01:00
.readthedocs.yml Fix submodules on RTD 2019-06-13 15:51:45 +02:00
.travis.yml Try 3.8 on travis 2019-10-17 14:56:20 +02:00
appveyor.yml Drop Python 3.4 2019-08-06 20:48:27 +02:00
AUTHORS.rst Drop Python 3.4 2019-08-06 20:48:27 +02:00
CHANGELOG.rst Prepare 19.2.0 2019-10-27 18:50:41 +01:00
codecov.yml Stop codecov comments 2018-06-18 08:25:21 +02:00
FAQ.rst Improve docs 2018-07-06 12:22:10 +02:00
LICENSE Initial work 2015-12-07 17:14:57 +01:00
MANIFEST.in Add AP wheel builder 2019-10-19 12:25:10 +02:00
pyproject.toml Get rid of setup.cfg 2019-10-17 12:15:21 +02:00
README.rst Passlib is abandonware and has bad defaults 2019-10-17 12:38:08 +02:00
SECURITY.md Create SECURITY.md 2019-05-27 18:10:25 +02:00
setup.py Python 3.8 2019-10-16 21:26:16 +02:00
tox.ini Get rid of setup.cfg 2019-10-17 12:15:21 +02:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

=====================================
CFFI-based Argon2 Bindings for Python
=====================================

.. image:: https://img.shields.io/pypi/v/argon2-cffi.svg
   :target: https://pypi.org/project/argon2-cffi/
   :alt: PyPI

.. image:: https://readthedocs.org/projects/argon2-cffi/badge/?version=stable
   :target: http://argon2-cffi.readthedocs.io/en/stable/?badge=stable
   :alt: Documentation Status

.. image:: https://travis-ci.org/hynek/argon2-cffi.svg?branch=master
   :target: https://travis-ci.org/hynek/argon2-cffi
   :alt: Travis CI status

.. image:: https://ci.appveyor.com/api/projects/status/3faufu7qgwc8nv2v/branch/master?svg=true
   :target: https://ci.appveyor.com/project/hynek/argon2-cffi
   :alt: AppVeyor CI Status

.. image:: https://codecov.io/github/hynek/argon2-cffi/branch/master/graph/badge.svg
   :target: https://codecov.io/github/hynek/argon2-cffi
   :alt: Test Coverage

.. image:: https://www.irccloud.com/invite-svg?channel=%23cryptography-dev&hostname=irc.freenode.net&port=6697&ssl=1
   :target: https://www.irccloud.com/invite?channel=%23cryptography-dev&hostname=irc.freenode.net&port=6697&ssl=1
   :alt: IRC

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://github.com/ambv/black
   :alt: Code style: black

.. teaser-begin

`Argon2 <https://github.com/p-h-c/phc-winner-argon2>`_ won the `Password Hashing Competition <https://password-hashing.net/>`_ and ``argon2-cffi`` is the simplest way to use it in Python and PyPy:

.. code-block:: pycon

  >>> from argon2 import PasswordHasher
  >>> ph = PasswordHasher()
  >>> hash = ph.hash("s3kr3tp4ssw0rd")
  >>> hash  # doctest: +SKIP
  '$argon2id$v=19$m=102400,t=2,p=8$tSm+JOWigOgPZx/g44K5fQ$WDyus6py50bVFIPkjA28lQ'
  >>> ph.verify(hash, "s3kr3tp4ssw0rd")
  True
  >>> ph.check_needs_rehash(hash)
  False
  >>> ph.verify(hash, "t0t411ywr0ng")
  Traceback (most recent call last):
    ...
  argon2.exceptions.VerifyMismatchError: The password does not match the supplied hash


``argon2-cffi``\ s documentation lives at `Read the Docs <https://argon2-cffi.readthedocs.io/>`_, the code on `GitHub <https://github.com/hynek/argon2-cffi>`_.
Its rigorously tested on Python 2.7, 3.5+, and PyPy.