Funktionsverständnisproblem



  • Hi Leute, ich hab probleme diese Funktion zu kapieren (ich möchte sie in python umschreiben):

    int gslame( int num ) 
    {
        int c = (num >> 16) & 0xffff;
        int a = num & 0xffff;
    
        c *= 0x41a7;
        a *= 0x41a7;
        a += ( (c & 0x7fff) << 16 );
    
        if( a < 0 ) 
        {
            a &= 0x7fffffff;
            a++;
        }
    
        a += (c >> 15);
    
        if( a < 0 ) 
        {
            a &= 0x7fffffff;
            a++;
        }
    
        return a;
    }
    
    int gspassenc( char* pass ) 
    {
        int passlen = strlen(pass);
        int num = 0x79707367;   // "gspy"
    
        if( !num )
            num = 1;
        else
            num &= 0x7fffffff;
    
        int a, c, d;
        for( int i = 0; i < passlen; i++ ) 
        {
            d = 0xff;
            c = 0;
            d -= c;
    
            if( d ) 
            {
                num = gslame( num );
                a = num % d;
                a += c;
            }
            else
                a = c;
    
            pass[i] ^= a;
        }
    
        return passlen;
    }
    

  • Mod

    Muss man das denn genau verstehen? Das kann man doch fast 1:1 nach Python übertragen, da dies die größtenteils gleichen Operatoren kennt wie C++. Das einzige was es glaube ich nicht gibt ist &= , aber das ist ja trivial nach & und = umschreibbar.


Log in to reply