%PDF- %PDF-
Direktori : /lib/python2.7/site-packages/passlib/crypto/ |
Current File : //lib/python2.7/site-packages/passlib/crypto/_md4.pyc |
� � 5Xc @ sy d Z d d l m Z d d l Z d d l m Z m Z m Z d g Z d � Z d � Z d Z d e f d � � YZ d S( s� passlib.crypto._md4 -- fallback implementation of MD4 Helper implementing insecure and obsolete md4 algorithm. used for NTHASH format, which is also insecure and broken, since it's just md4(password). Implementated based on rfc at http://www.faqs.org/rfcs/rfc1320.html .. note:: This shouldn't be imported directly, it's merely used conditionally by ``passlib.crypto.lookup_hash()`` when a native implementation can't be found. i����( t hexlifyN( t bascii_to_strt iranget PY3t md4c C s | | @| | @BS( N( ( t xt yt z( ( s7 /usr/lib/python2.7/site-packages/passlib/crypto/_md4.pyt F s c C s | | @| | @B| | @BS( N( ( R R R ( ( s7 /usr/lib/python2.7/site-packages/passlib/crypto/_md4.pyt G! s i i i c B sq e Z d Z d Z d Z Z d Z d Z d Z d Z d d � Z d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g g Z d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g g Z d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g g Z d � Z d � Z d � Z d � Z d � Z RS( s� pep-247 compatible implementation of MD4 hash algorithm .. attribute:: digest_size size of md4 digest in bytes (16 bytes) .. method:: update update digest by appending additional content .. method:: copy create clone of digest object, including current state .. method:: digest return bytes representing md4 digest of current content .. method:: hexdigest return hexadecimal version of digest R i i@ i c C sA d | _ d d d d g | _ d | _ | r= | j | � n d S( Ni i#EgI���� I�ܺ� ivT2t ( t _countt _statet _buft update( t selft content( ( s7 /usr/lib/python2.7/site-packages/passlib/crypto/_md4.pyt __init__N s i i i i i i i i i i i i i i i i c C s� t j d | � } | j } t | � } xs | j D]h \ } } } } } } | | t | | | | | | � | | t @} | | >t @| d | ?| | <q1 Wxw | j D]l \ } } } } } } | | t | | | | | | � | | d t @} | | >t @| d | ?| | <q� Wxs | j D]h \ } } } } } } | | | | | | A| | A| | d t @} | | >t @| d | ?| | <q!Wx. t d � D] } | | | | t @| | <q�Wd S( s process 64 byte blocks <16Ii i�y�Zi���ni N( t structt unpackR t listt _round1R t MASK_32t _round2R t _round3R ( R t blockt Xt origt statet at bt ct dt kt st tt i( ( s7 /usr/lib/python2.7/site-packages/passlib/crypto/_md4.pyt _process� s "2""6""2"c C s� t | t � s6 t r$ t d � � q6 | j d � } n | j } | rR | | } n d } t | � } x] t r� | d } | | k r� | j | | | !� | j d 7_ | } qg | | | _ d Sqg Wd S( Ns expected bytest asciii i@ i ( t isinstancet bytesR t TypeErrort encodeR t lent TrueR% R ( R R t buft idxt endt next( ( s7 /usr/lib/python2.7/site-packages/passlib/crypto/_md4.pyR � s"