Your IP : 3.129.210.35


Current Path : /opt/alt/python312/lib64/python3.12/__pycache__/
Upload File :
Current File : //opt/alt/python312/lib64/python3.12/__pycache__/crypt.cpython-312.pyc

�

�Q�fI�
���dZddlZ	ddlZddlZddlZ	ddl
Z
ddlmZ
ddlmZe
j"ed�	�e	j&e	j(zd
zZe
�ZGd�dedd
��Zd%dd�d�Zd%d�ZgZdd�d�Zedddd�edddd�dD]Zeddezddee�zd��s�neddd d!�ed"dd#d$�[[y#e$r ej
dk(red��ed��wxYw)&zEWrapper to the POSIX crypt library call and associated functionality.�N�win32z,The crypt module is not supported on Windowsz;The required _crypt module was not built as part of CPython)�SystemRandom)�
namedtuple)��
)�removez./c��eZdZdZd�Zy)�_MethodziClass representing a salt method per the Modular Crypt Format or the
    legacy 2-character crypt method.c�8�dj|j�S)Nz<crypt.METHOD_{}>)�format�name)�selfs �,/opt/alt/python312/lib64/python3.12/crypt.py�__repr__z_Method.__repr__ s��"�)�)�$�)�)�4�4�N)�__name__�
__module__�__qualname__�__doc__r�rrr
r
s��(�5rr
z name ident salt_chars total_size��roundsc��|�	td}|�2t|t�s"t|jj
�d���|jsd}nd|j�d�}|jrn|jddk(r\|�d}nMtj|dz
�}|d|zk7rtd��d	|cxkrd
kstd��td��||d�d�z
}nL|jd
vr.|�<d|cxkrdkstd��td��|d|�d�z
}n|�t|�d���|djd�t|j�D��z
}|S)zsGenerate a salt for the specified method.

    If not specified, the strongest available method will be used.

    rz+ object cannot be interpreted as an integer��$�2��zrounds must be a power of 2��z%rounds out of the range 2**4 to 2**31�02d)�5�6i�i�ɚ;z+rounds out of the range 1000 to 999_999_999zrounds=z$ doesn't support the rounds argumentc3�NK�|]}tjt����y�w�N)�_sr�choice�
_saltchars)�.0�chars  r�	<genexpr>zmksalt.<locals>.<genexpr>Fs����M�4L�D����J�'�4L�s�#%)�methods�
isinstance�int�	TypeError�	__class__r�ident�
bit_length�
ValueError�join�range�
salt_chars)�methodr�s�
log_roundss    r�mksaltr:$s����~�����
��*�V�S�"9��6�+�+�4�4�5�64�5�6�	6��<�<�������~�Q���
�|�|����Q��3�.��>��J�����q��1�J���j��(� �!>�?�?��
�(�b�(� �!H�I�I�)� �!H�I�I�	�
�3��q�
!�!��	����	#����6�0�[�0� �!N�O�O�1� �!N�O�O�
�7�6�(�!�$�$�A�	�	��F�8�#G�H�I�I�����M�E�&�:K�:K�4L�M�	M�M�A��Hrc�h�|�t|t�rt|�}tj||�S)aRReturn a string representing the one-way hash of a password, with a salt
    prepended.

    If ``salt`` is not specified or is ``None``, the strongest
    available method will be selected and a salt generated.  Otherwise,
    ``salt`` may be one of the ``crypt.METHOD_*`` values, or a string as
    returned by ``crypt.mksalt()``.

    )r-r
r:�_crypt�crypt)�word�salts  rr=r=Js,���|�z�$��0��d�|���<�<��d�#�#rc�x�t|g|���}|t�d|z<t||��}d}	td|�}|r.t|�|jk(rtj|�yy#t$rF}|j
t
jt
jt
jhvrYd}~y�d}~wwxYw)N�METHOD_rrFT)
r
�globalsr:r=�OSError�errno�EINVAL�EPERM�ENOSYS�len�
total_sizer,�append)r
r�argsr7r?�result�es       r�_add_methodrN\s���
�T�
!�D�
!�F�"(�G�I�i�$����&��(�D�
�F���r�4����#�f�+��!2�!2�2����v��������7�7�u�|�|�U�[�[�%�,�,�?�?��
��	�s�A*�*	B9�3;B4�3B4�4B9�SHA512r#��j�SHA256r"�?)�b�y�ar�BLOWFISHr��;�MD5�1��"�CRYPT�rr%)r�sys�_sysr<�ModuleNotFoundError�platform�ImportErrorrD�string�_string�warnings�randomr�
_SystemRandom�collectionsr�_namedtuple�_deprecatedr�
ascii_letters�digitsr(r&r
r:r=r,rN�_vrHrrr�<module>rps4��K��Y��
���0�1�����X�g�.��
"�
"�W�^�^�
3�d�
:�
��o��5�k�)�%G�H�5�#
�$�#
�L$� 
��$(��"�H�c�2�s�#��H�c�2�r�"��B��:�s�R�x��R�#�b�'�\�$�G�
���E�3��2���G�T�1�b�!����k�Y��}�}����H�I�I��W�X�X�	Y�s�C�%C6

?>