a
    xd                     @   sR   d dl Z d dlZd dlZddlmZmZmZmZmZ dd Z	e
dkrNe	ej dS )    N   )DEFAULT_HASH_LENGTHDEFAULT_MEMORY_COSTDEFAULT_PARALLELISMDEFAULT_TIME_COSTPasswordHasherc           
      C   sZ  t jdd}|jdtddd |jdtdtd	 |jd
tdtd	 |jdtdtd	 |jdtdtd	 || dd  }d}t	|j
|j|j|jd}||}|j
df|jdf|jdf|jdfd}td|jf  t| D ]"\}}td||d |d f  qtd tjdj||ddj|j
|j|j|jd|jd}	td|	|j d   d S )!NzBenchmark Argon2.)descriptionz-nd   z Number of iterations to measure.)typedefaulthelpz-tz`time_cost`)r
   r   r   z-mz`memory_cost`z-pz`parallelism`z-lz`hash_length`r   s   secret)Z	time_costZmemory_costZparallelismZhash_lenZ
iterationsZKiBthreadsbyteszRunning Argon2id %d times with:z	%s: %d %sr   z
Measuring...z!ph.verify({hash!r}, {password!r}))hashpasswordzfrom argon2 import PasswordHasher, Type

ph = PasswordHasher(
    time_cost={time_cost!r},
    memory_cost={memory_cost!r},
    parallelism={parallelism!r},
    hash_len={hash_len!r},
)
gc.enable())setupnumberz#
{:.1f}ms per password verificationi  )argparseArgumentParseradd_argumentintr   r   r   r   
parse_argsr   tmplr   printnsorteditemstimeitformat)
argvparserargsr   phr   paramskvduration r*   G/var/www/html/Ranjet/env/lib/python3.9/site-packages/argon2/__main__.pymain   sb    

r,   __main__)r   sysr     r   r   r   r   r   r,   __name__r"   r*   r*   r*   r+   <module>   s   	D