[JS -> PHP] JS Code omzetten naar PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb absoluut geen verstand van Javascript maar ik moet het volgende stukje code omgezet hebben naar PHP.

code:
1
2
cipherby = parseInt(strTexto.substr(a,2),16) ^ k;
cipher = cipher + ((cipherby<16?"0":"")+cipherby.toString(16));


Ik heb nu het volgende (let aub. niet op het gebruik van andere var. namen):
code:
1
2
$t = ($this->s[$i] + $this->s[$j]) % 256; 
$paramstr[$c] = chr(ord($paramstr[$c]) ^ $this->s[$t]);


Het heeft te maken met een RC4 encryptie, waarbij de JS versie een 32char HEX resultaat geeft en de PHP versie een 32char ascii.
De php versie moet dus volgens de JS versie ook een HEX resultaat geven.

Iemand die mij hierin kan helpen?

Ik zal even de code uitbreiden, dan wordt het een en ander duidelijker:

JS:
code:
1
2
3
4
5
6
7
8
9
10
11
12
for (a = 0; a < strTexto.length; a+=2) {
    i = (i + 1) % 256;
    j = (j + sbox[i]) % 256;
    temp = sbox[i];
    sbox[i] = sbox[j];
    sbox[j] = temp;

    k = sbox[(sbox[i] + sbox[j]) % 256];

    cipherby = parseInt(strTexto.substr(a,2),16) ^ k;
    cipher = cipher + ((cipherby<16?"0":"")+cipherby.toString(16));
}

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
PHP:
   $len= strlen($paramstr); 
   for ($c= 0; $c < $len; $c++) 
   { 
    $i = ($i + 1) % 256; 
    $j = ($j + $this->s[$i]) % 256; 
    $t = $this->s[$i]; 
    $this->s[$i] = $this->s[$j]; 
    $this->s[$j] = $t; 
        
    $t = ($this->s[$i] + $this->s[$j]) % 256; 
    $paramstr[$c] = chr(ord($paramstr[$c]) ^ $this->s[$t]); 

   }

[ Voor 46% gewijzigd door Verwijderd op 22-10-2004 15:22 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

tip: gebruik dechex en hexdec
JS doet hier namelijk omzettingen van hexadecimaal naar decimaal en omgekeerd door de nummer basis (16) mee te geven aan parseInt() en toString()

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
zet ieder geval even [ code ] blokken om je code heen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
rwb schreef op 22 oktober 2004 @ 15:05:
zet ieder geval even [ code ] blokken om je code heen.
Ok, sorry. Is gebeurd.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Idd. ben ik er nu achter dat ik dechex en hexdec moet gebruiken. Ik krijg nu netjes uit de js code een Hex resultaat, maar het klopt nog steeds niet.
Iemand die me misschien verder kan helpen. Paar tips zouden welkom zijn.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

Een letterlijke omzetting van de JS functie zou volgens mij dit moeten zijn:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
for ($a = 0; $a < strlen($strTexto); $a+=2)
{ 
    $i = ($i + 1) % 256;
    $j = ($j + $sbox[$i]) % 256;
    $temp = $sbox[$i];
    $sbox[$i] = $sbox[$j];
    $sbox[$j] = $temp;
        
    $k = $sbox[($sbox[$i] + $sbox[$j]) % 256];

    $cipherby = hexdec(substr($strTexto, $a, 2)) ^ $k;
    $cipher .= (($cipherby < 16 ? '0' : '') . dechex($cipherby));
}

Intentionally left blank

Pagina: 1