eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › TEA PHP i 2 różne systemy i małe problemy
Ilość wypowiedzi w tym wątku: 6

  • 1. Data: 2010-12-06 21:40:34
    Temat: TEA PHP i 2 różne systemy i małe problemy
    Od: "Rafal\(sxat\)" <gonzak[@]op.pl>

    Witam,

    mam takiego smiesznego buga...

    na czym polega? a na tym że skypt TEA w PHPie pod windows działa
    dobrze, po przegraniu na serwer Linuxowy... przestaje poprawnie
    dekodować (są same krzaki)

    w sumie zlokalizowałem błąd - że źle dodaje/potęguje na unixie
    w tym miejscu w unbrew (algorytm przepisany z javy) ale po
    zastąpieniu tego przez np bcpow lub bcadd - dekodowanie wogole
    przestaje dzialać i na windows i pod PHpem

    jest jakaś różnica w interpretacji wartości ... ale nie wiem jak sobie
    z tym poradzić

    $v1 -= (($this->bcleftshift($v0,4) ) + $this->S[2] ^ $v0) + ($sum ^
    $this->_rshift($v0, 5)) + $this->S[3];

    co w nim może być nie tak że wartość v1 otrzymuje całkowicie inne
    wartości - choć oba systemy są 32 bitowe... przez co dekodowanie
    całkowicie nie działa

    czy to wina złego ustawienia php? (PHP_INT_SIZE:8)






    function unbrew(&$buf) {
    //assert buf.length % 2 == 1;
    $i = 1;
    while ($i<Count($buf)) {
    $n = $this->CUPS;
    $v0 = $buf[$i];
    $v1 = $buf[$i+1];
    $sum = $this->UNSUGAR;
    while ($n--> 0) {
    $v1 -= (($this->bcleftshift($v0,4) ) + $this->S[2] ^
    $v0) + ($sum ^ $this->_rshift($v0, 5)) + $this->S[3];


    $a=$this->bcleftshift($v1,4);
    $b=$this->S[0] ^ $v1;
    $c=$sum ^ $this->_rshift($v1, 5);

    $d=$this->S[1];



    $v0 -= ($a + $this->S[0] ^ $v1) + $c + $d;

    $sum -= $this->SUGAR;
    }
    $buf[$i] = $v0 & 0xffffffff;
    $buf[$i+1] = $v1 & 0xffffffff;
    $i+=2;
    }
    print_r($buf);
    }

    function _rshift($integer, $n) {
    // convert to 32 bits
    if (0xffffffff < $integer || -0xffffffff > $integer) {
    $integer = fmod($integer, 0xffffffff + 1);
    }

    // convert to unsigned integer
    if (0x7fffffff < $integer) {
    $integer -= 0xffffffff + 1.0;
    } elseif (-0x80000000 > $integer) {
    $integer += 0xffffffff + 1.0;
    }

    // do right shift
    if (0 > $integer) {
    $integer &= 0x7fffffff; // remove sign
    bit before shift
    $integer >>= $n; // right shift
    $integer |= 1 << (31 - $n); // set shifted
    sign bit
    } else {
    $integer >>= $n; // use normal
    right shift
    }

    return $integer;
    }


  • 2. Data: 2010-12-06 22:03:38
    Temat: Re: TEA PHP i 2 różne systemy i małe problemy
    Od: Mariusz Marszałkowski <m...@g...com>

    On 6 Gru, 22:40, "Rafal\(sxat\)" <gonzak[@]op.pl> wrote:
    > Witam,
    >
    > mam takiego smiesznego buga...
    >
    > na czym polega? a na tym że skypt TEA w PHPie pod windows działa
    > dobrze, po przegraniu na serwer Linuxowy... przestaje poprawnie
    > dekodować (są same krzaki)

    Zrób zrzut zmiennych do pliku w różnych miejscach kodu i zobaczysz
    w którym momencie pojawiają się różnice. Jak będziesz miał konkretną
    instrukcję w która inaczej się zachowuje, to ustalenie przyczyny
    pójdzie
    gładko.
    Pozdrawiam


  • 3. Data: 2010-12-06 22:35:03
    Temat: Re: TEA PHP i 2 różne systemy i małe problemy
    Od: "Rafal\(sxat\)" <gonzak[@]op.pl>

    >Zrób zrzut zmiennych do pliku w różnych miejscach kodu i zobaczysz
    >w którym momencie pojawiają się różnice. Jak będziesz miał konkretną
    >instrukcję w która inaczej się zachowuje, to ustalenie przyczyny
    >pójdzie
    >gładko.

    mam np to:

    $v1 -= ((double)($this->bcleftshift($v0,4) ) + $this->S[2] ^ $v0) +
    ($sum ^ $this->_rshift($v0, 5)) + $this->S[3];
    który zwraca jakiś wynik

    jak to zamienie na

    $a=$this->bcleftshift($v0,4);
    $b=$this->S[2] ^ $v0;
    $c=$sum ^ $this->_rshift($v0, 5);
    $d=$this->S[3];

    i zapisze jako $v1-=((double)$a+$b)+$c+$d

    to to v1 jest różne od poprzedniego v1...

    i tego nie mogę zrobuzmieć co robi takiego

    $this->bcleftshift($v0,4) +$this->S[2] ^ $v0 jest różne od $a+$b
    chociaż nie powinno...

    Rafał



  • 4. Data: 2010-12-07 12:23:31
    Temat: Re: TEA PHP i 2 różne systemy i małe problemy
    Od: Mariusz Marszałkowski <m...@g...com>

    On 6 Gru, 23:35, "Rafal\(sxat\)" <gonzak[@]op.pl> wrote:
    > >Zr b zrzut zmiennych do pliku w r nych miejscach kodu i zobaczysz
    > >w kt rym momencie pojawiaj si r nice. Jak b dziesz mia konkretn
    > >instrukcj w kt ra inaczej si zachowuje, to ustalenie przyczyny
    > >p jdzie
    > >g adko.
    >
    > mam np to:
    >
    >  $v1  -= ((double)($this->bcleftshift($v0,4) ) + $this->S[2] ^ $v0) +
    > ($sum ^ $this->_rshift($v0, 5)) + $this->S[3];
    > kt ry zwraca jaki wynik
    >
    > jak to zamienie na
    >
    >   $a=$this->bcleftshift($v0,4);
    >   $b=$this->S[2] ^ $v0;
    >   $c=$sum ^ $this->_rshift($v0, 5);
    >   $d=$this->S[3];
    >
    > i zapisze jako $v1-=((double)$a+$b)+$c+$d
    >
    > to to v1 jest r ne od poprzedniego v1...
    >
    > i tego nie mog zrobuzmie co robi takiego

    A czy zmienne $a $b $c $d $S[] i $v przed odjeciem od niej
    tego wyrazenia sa takie same?

    Pozdrawiam


  • 5. Data: 2010-12-07 13:45:01
    Temat: Re: TEA PHP i 2 r??ne systemy i ma?e problemy
    Od: "Rafal\(sxat\)" <gonzak[@]op.pl>


    >A czy zmienne $a $b $c $d $S[] i $v przed odjeciem od niej
    >tego wyrazenia sa takie same?

    sa takie same,


    nastepuje male przepelnienie INTa, i o ile to dobrze dziala pod
    windows na linxie generuje zera...


    Pozdrawiam


  • 6. Data: 2010-12-10 12:56:07
    Temat: Re: TEA PHP i 2 r??ne systemy i ma?e problemy
    Od: "Rafal\(sxat\)" <gonzak[@]op.pl>

    > nastepuje male przepelnienie INTa, i o ile to dobrze dziala pod
    > windows na linxie generuje zera...


    no nic przepisalem toto na PHP Extensions i dziala... pozniej sie to
    moze opublikuje ;)
    Rf

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: