ó
@™\c           @   sq   d  Z  d d l Z d d „ Z d d „ Z d d d „ Z d d d	 „ Z e d
 k rm d d l Z e j ƒ  n  d S(   sP    

version modifiÃ©e de xtea_ini pour coller ï¿½ la version C fournie par InES

iÿÿÿÿNt   <c         C   sU   d } xH t  d t | ƒ d d ƒ D]* } | t |  | | | d !d | ƒ7} q# W| S(   Nt    i    i   i   t   endian(   t   ranget   lent   xtea_encrypt(   t   keyt   dataR   t   chaine_cryptet   n(    (    s?   /var/www/html/tempsreel.histoconso.com/private/python/myXtea.pyt   myEncode	   s    #(c         C   sU   d } xH t  d t | ƒ d d ƒ D]* } | t |  | | | d !d | ƒ7} q# W| S(   NR   i    i   i   R   (   R   R   t   xtea_decrypt(   R   R   R   t   chaine_decrypteR	   (    (    s?   /var/www/html/tempsreel.histoconso.com/private/python/myXtea.pyt   myDecode   s    #(i   t   !c   
      C   sÇ   t  j | d | ƒ \ } } d	 \ } } } x‚ t | ƒ D]t }	 | | d >| d ?A| | |  | d @A| @} | | | @} | | d >| d ?A| | |  | d ?d @A| @} q8 Wt  j | d | | ƒ S(
   s)  
        Encrypt 64 bit data block using XTEA block cypher
        * key = 32 bit (4 char) 
        * block = 64 bit (8 char)
        * n = rounds (default 16)
        * endian = byte order (see 'struct' doc - default big/network) 
        <    little-endian
        > & ! big endian
        
    t   2Ll    l   ¹yn< l   ÿÿ i   i   i   i   (   l    l   ¹yn< l   ÿÿ (   t   structt   unpackR   t   pack(
   R   t   blockR	   R   t   v0t   v1t   _sumt   deltat   maskt   _(    (    s?   /var/www/html/tempsreel.histoconso.com/private/python/myXtea.pyR      s    .6c   
      C   sÒ   t  j | d | ƒ \ } } d \ } } | | | @} x‚ t | ƒ D]t }	 | | d >| d ?A| | |  | d ?d @A| @} | | | @} | | d >| d ?A| | |  | d @A| @} qC Wt  j | d | | ƒ S(	   sì   
        Decrypt 64 bit data block using XTEA block cypher
        * key = 32 bit (4 char) 
        * block = 64 bit (8 char)
        * n = rounds (default 16)
        * endian = byte order (see 'struct' doc - default big/network) 
    R   l   ¹yn< l   ÿÿ i   i   i   i   (   l   ¹yn< l   ÿÿ (   R   R   R   R   (
   R   R   R	   R   R   R   R   R   R   R   (    (    s?   /var/www/html/tempsreel.histoconso.com/private/python/myXtea.pyR   .   s    22t   __main__(	   t   __doc__R   R
   R   R   R   t   __name__t   doctestt   testmod(    (    (    s?   /var/www/html/tempsreel.histoconso.com/private/python/myXtea.pyt   <module>   s   		