Fehler beim Portieren?

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Smily

Betreff: Fehler beim Portieren?

BeitragDi, Aug 14, 2007 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich glaube, ich habe hier beim Portieren eines RC4-Algorhytmusses von Blitzmax zu PHP einen kleinen Fehler gemacht, kann ihn aber nicht finden.

Kann mir jm. hier helfen pls?

Blitzmax:
Code: [AUSKLAPPEN]
print rc4("moep", "moep")

Function rc4$(s$,key$)
   Local sbox[256], keyh[256]
   Local i, J, kptr, x, swap
   Local r$
   For i = 0 To 255
      sbox[i] = i
      kptr = kptr + 1
      keyh[i] = Asc(Mid$(key$, kptr, 1))
      kptr = kptr Mod Len(key$)
   Next
   For i = 0 To 255
      j = (j + sbox[i] + keyh[i]) Mod 256
      swap = sbox[i]
      sbox[i] = sbox[j]
      sbox[j] = swap
   Next
   For x = 1 To Len(s$)
      i = x Mod 256
      j = (j + sbox[i]) Mod 256
      r$ = r$ + Chr$(Asc(Mid$(s$, x, 1)) ~ sbox[(sbox[i] + sbox[j]) Mod 256])
   Next
   Return r$
End Function


PHP:
Code: [AUSKLAPPEN]
print rc4("moep", "moep");

function rc4($s, $key) {
   for($i = 0; $i <= 255; $i++) {
      $sbox[$i] = $i;
      $kptr++;
      $keyh[$i] = ord(Substr($key,$kptr-1,1));
      $kptr = bcmod($kptr, strlen($key));
   }

   for($i = 0; $i <= 255; $i++) {
      $j = bcmod($j + $sbox[i] + $keyh[i], 256);
      $swap = $sbox[i];
      $sbox[i] = $sbox[j];
      $sbox[j] = $swap;
   }
   for($x = 1; $x <= strlen($s); $x++) {
      $i = bcmod($x, 256);
      $j = bcmod($j + $sbox[$i], 256);
      $r = $r . chr(ord(substr($s,$x-1,1)) xor $sbox[bcmod(($sbox[i] + $sbox[j]),256)]);
   }
   return $r;
}
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Artemis

BeitragDi, Aug 14, 2007 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Aus i und j mach $i und $j.

Ist generell nützlich, wenn man immer mit error_reporting(E_ALL) arbeitet, dann wird so etwas nämlich als Notiz (oder war's ne Warnung) gemeldet.

Smily

BeitragDi, Aug 14, 2007 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
thx.
ich habe meinen code angepasst. Aber er gibt trotzdem irgendwie noch nicht das wahre zurück :/
thx für den tip mit dem Error-report. Kannte ich noch gar nicht ^^ aber diesmal gibt es auch von dort keine nützlichen hinweise

Code: [AUSKLAPPEN]
print rc4("moep", "moep");
function rc4($s, $key) {
   for($i = 0; $i <= 255; $i++) {
      $sbox[$i] = $i;
      $kptr++;
      $keyh[$i] = ord(Substr($key,$kptr-1,1));
      $kptr = bcmod($kptr, strlen($key));
   }

   for($i = 0; $i <= 255; $i++) {
      $j = bcmod($j + $sbox[$i] + $keyh[$i], 256);
      $swap = $sbox[$i];
      $sbox[$i] = $sbox[$j];
      $sbox[$j] = $swap;
   }
   for($x = 1; $x <= strlen($s); $x++) {
      $i = bcmod($x, 256);
      $j = bcmod($j + $sbox[$i], 256);
      $r = $r.chr(ord(substr($s,$x-1,1)) xor $sbox[bcmod(($sbox[$i] + $sbox[$j]),256)]);
   }
   return $r;
}
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group