관리-도구
편집 파일: 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>