관리-도구
편집 파일: crypt.cpython-311.pyc
� c��fI � � � d Z ddlZ ddlZn*# e$ r" ej dk r ed� � � ed� � �w xY wddlZddlZ ddl Z ddlmZ ddlmZ e j ed� � � e j e j z d z Z e � � Z G d� d edd � � � � Zd%dd�d�Zd%d�Zg Zdd�d�Z edddd� � edddd� � dD ]#Z eddez dd ee� � z d�� � r n�$ eddd d!� � ed"dd#d$� � [[dS )&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 � � e Zd ZdZd� ZdS )�_MethodziClass representing a salt method per the Modular Crypt Format or the legacy 2-character crypt method.c �6 � d� | j � � S )Nz<crypt.METHOD_{}>)�format�name)�selfs �,/opt/alt/python311/lib64/python3.11/crypt.py�__repr__z_Method.__repr__ s � �"�)�)�$�)�4�4�4� N)�__name__� __module__�__qualname__�__doc__r � r r r r s- � � � � � �(� (�5� 5� 5� 5� 5r r z name ident salt_chars total_size��roundsc � � | � t d } |�1t |t � � st |j j � d�� � �| j sd}nd| j � d�}| j rs| j d dk rb|�d}nSt � |dz � � }|d|z k rt d � � �d |cxk rdk sn t d� � �||d �d�z }nG| j dv r*|�'d|cxk rdk sn t d� � �|d|� d�z }n|�t | � d�� � �|d� d� t | j � � D � � � � z }|S )zsGenerate a salt for the specified method. If not specified, the strongest available method will be used. Nr z+ 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 argumentc 3 �T K � | ]#}t � t � � V � �$d S �N)�_sr�choice� _saltchars)�.0�chars r � <genexpr>zmksalt.<locals>.<genexpr>F s. � � � �M�M�D����J�'�'�M�M�M�M�M�Mr )�methods� isinstance�int� TypeError� __class__r �ident� bit_length� ValueError�join�range� salt_chars)�methodr �s� log_roundss r �mksaltr: $ s� � � �~����� ��*�V�S�"9�"9���6�+�4� 5� 5� 5� 6� 6� 6��<� ����������� �|� J���Q��3�.�.��>��J�J�����q��1�1�J���j��(�(� �!>�?�?�?�� �(�(�(�(�b�(�(�(�(� �!H�I�I�I� � � !� !� !� !�!��� ��� #� #����6�0�0�0�0�[�0�0�0�0� �!N�O�O�O� �$�6�$�$�$�$�A�� � ��F�H�H�H�I�I�I�����M�M�E�&�:K�4L�4L�M�M�M� M� M�M�A��Hr c �x � |�t |t � � rt |� � }t j | |� � S )aR Return 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 r r= r= J s4 � � �|�z�$��0�0�|��d�|�|���<��d�#�#�#r c � � t | g|�R � }|t � � d| z <