%PDF- %PDF-
| Direktori : /lib/python3.9/site-packages/passlib/handlers/__pycache__/ |
| Current File : //lib/python3.9/site-packages/passlib/handlers/__pycache__/phpass.cpython-39.pyc |
a
f�Wc� � @ s| d Z ddlmZ ddlZe�e�ZddlmZ ddl m
Z
mZmZ ddl
m mZ dgZG dd� dejejejej�ZdS )z�passlib.handlers.phpass - PHPass Portable Crypt
phppass located - http://www.openwall.com/phpass/
algorithm described - http://www.openwall.com/articles/PHP-Users-Passwords
phpass context - blowfish, bsdi_crypt, phpass
� )�md5N)�h64)�u�
uascii_to_str�unicode�phpassc @ s� e Zd ZdZd ZdZejZd Z Z
ejZdZdZ
dZdZed�Zed�ed �fZed
�ed�ed�ed �iZedd
� �Zdd� Zdd� ZdS )r a� This class implements the PHPass Portable Hash, and follows the :ref:`password-hash-api`.
It supports a fixed-length salt, and a variable number of rounds.
The :meth:`~passlib.ifc.PasswordHash.using` method accepts the following optional keywords:
:type salt: str
:param salt:
Optional salt string.
If not specified, one will be autogenerated (this is recommended).
If specified, it must be 8 characters, drawn from the regexp range ``[./0-9A-Za-z]``.
:type rounds: int
:param rounds:
Optional number of rounds to use.
Defaults to 19, must be between 7 and 30, inclusive.
This value is logarithmic, the actual number of iterations used will be :samp:`2**{rounds}`.
:type ident: str
:param ident:
phpBB3 uses ``H`` instead of ``P`` for its identifier,
this may be set to ``H`` in order to generate phpBB3 compatible hashes.
it defaults to ``P``.
:type relaxed: bool
:param relaxed:
By default, providing an invalid value for one of the other
keywords will result in a :exc:`ValueError`. If ``relaxed=True``,
and the error can be corrected, a :exc:`~passlib.exc.PasslibHashWarning`
will be issued instead. Correctable errors include ``rounds``
that are too small or too large, and ``salt`` strings that are too long.
.. versionadded:: 1.6
)�salt�rounds�ident� � � � Zlog2z$P$z$H$�P�Hc C sR | � |�\}}|d |dd� |dd � }}}| |t�|�d��||pLd d�S )Nr � � �ascii)r
r r �checksum)Z_parse_identr Zdecode_int6�encode)�cls�hashr
�datar r Zchk� r �;/usr/lib/python3.9/site-packages/passlib/handlers/phpass.py�from_string` s $�zphpass.from_stringc C s8 t d�| jt�| j��d�| j| jp*t d�f }t|�S )Nz%s%s%s%sr � ) r r
r Zencode_int6r �decoder r r )�selfr r r r � to_stringk s
�zphpass.to_stringc C sl t |t�r|�d�}d| j>