Extract howto
This commit is contained in:
parent
811841d1b3
commit
baead4e9e5
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,3 +13,4 @@
|
|||||||
__pycache__
|
__pycache__
|
||||||
dist
|
dist
|
||||||
docs/_build/
|
docs/_build/
|
||||||
|
Justfile
|
||||||
|
|||||||
38
docs/api.rst
38
docs/api.rst
@ -3,44 +3,6 @@ API Reference
|
|||||||
|
|
||||||
.. module:: argon2
|
.. module:: argon2
|
||||||
|
|
||||||
*argon2-cffi* comes with an high-level API and uses the officially recommended low-memory Argon2 parameters that result in a verification time of 40--50ms on recent-ish hardware.
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
|
|
||||||
The current memory requirement is set to rather conservative 64 MB.
|
|
||||||
However, in memory constrained environments such as Docker containers that can lead to problems.
|
|
||||||
One possible non-obvious symptom are apparent freezes that are caused by swapping.
|
|
||||||
|
|
||||||
Please check :doc:`parameters` for more details.
|
|
||||||
|
|
||||||
Unless you have any special needs, all you need to know is:
|
|
||||||
|
|
||||||
.. doctest::
|
|
||||||
|
|
||||||
>>> from argon2 import PasswordHasher
|
|
||||||
>>> ph = PasswordHasher()
|
|
||||||
>>> hash = ph.hash("correct horse battery staple")
|
|
||||||
>>> hash # doctest: +SKIP
|
|
||||||
'$argon2id$v=19$m=65536,t=3,p=4$MIIRqgvgQbgj220jfp0MPA$YfwJSVjtjSU0zzV/P3S9nnQ/USre2wvJMjfCIjrTQbg'
|
|
||||||
>>> ph.verify(hash, "correct horse battery staple")
|
|
||||||
True
|
|
||||||
>>> ph.check_needs_rehash(hash)
|
|
||||||
False
|
|
||||||
>>> ph.verify(hash, "Tr0ub4dor&3")
|
|
||||||
Traceback (most recent call last):
|
|
||||||
...
|
|
||||||
argon2.exceptions.VerifyMismatchError: The password does not match the supplied hash
|
|
||||||
|
|
||||||
|
|
||||||
A login function could thus look like this:
|
|
||||||
|
|
||||||
.. literalinclude:: login_example.py
|
|
||||||
:language: python
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
While the :class:`PasswordHasher` class has the aspiration to be good to use out of the box, it has all the parametrization you'll need:
|
|
||||||
|
|
||||||
.. autoclass:: PasswordHasher
|
.. autoclass:: PasswordHasher
|
||||||
:members: from_parameters, hash, verify, check_needs_rehash
|
:members: from_parameters, hash, verify, check_needs_rehash
|
||||||
|
|
||||||
|
|||||||
38
docs/howto.md
Normal file
38
docs/howto.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# How to Hash a Password
|
||||||
|
|
||||||
|
*argon2-cffi* comes with an high-level API and uses the officially recommended low-memory Argon2 parameters that result in a verification time of 40--50ms on recent-ish hardware.
|
||||||
|
|
||||||
|
:::{warning}
|
||||||
|
The current memory requirement is set to rather conservative 64 MB.
|
||||||
|
However, in memory constrained environments such as Docker containers that can lead to problems.
|
||||||
|
One possible non-obvious symptom are apparent freezes that are caused by swapping.
|
||||||
|
|
||||||
|
Please check {doc}`parameters` for more details.
|
||||||
|
:::
|
||||||
|
|
||||||
|
Unless you have any special requirements, all you need to know is:
|
||||||
|
|
||||||
|
```python
|
||||||
|
>>> from argon2 import PasswordHasher
|
||||||
|
>>> ph = PasswordHasher()
|
||||||
|
>>> hash = ph.hash("correct horse battery staple")
|
||||||
|
>>> hash # doctest: +SKIP
|
||||||
|
'$argon2id$v=19$m=65536,t=3,p=4$MIIRqgvgQbgj220jfp0MPA$YfwJSVjtjSU0zzV/P3S9nnQ/USre2wvJMjfCIjrTQbg'
|
||||||
|
>>> ph.verify(hash, "correct horse battery staple")
|
||||||
|
True
|
||||||
|
>>> ph.check_needs_rehash(hash)
|
||||||
|
False
|
||||||
|
>>> ph.verify(hash, "Tr0ub4dor&3")
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
argon2.exceptions.VerifyMismatchError: The password does not match the supplied hash
|
||||||
|
```
|
||||||
|
|
||||||
|
A login function could thus look like this:
|
||||||
|
|
||||||
|
```{literalinclude} login_example.py
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
While the {class}`argon2.PasswordHasher` class has the aspiration to be good to use out of the box, it has all the parametrization you'll need.
|
||||||
@ -15,6 +15,7 @@ Release **{sub-ref}`release`** ([What's new?](https://github.com/hynek/argon2-c
|
|||||||
|
|
||||||
argon2
|
argon2
|
||||||
installation
|
installation
|
||||||
|
howto
|
||||||
api
|
api
|
||||||
parameters
|
parameters
|
||||||
cli
|
cli
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user