BlitzMax zu PHP

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Suco-X

Betreff: BlitzMax zu PHP

BeitragMi, März 07, 2007 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.
Folgendes:
Ich benötige eine kleine Funktion zum verschlüsseln von Strings, die man mit PHP und mit BlitzMax nutzen kann. Da ich für BlitzMax keine Gegenfunktion zur PHP Crypt Funktion gefunden habe, habe ich es umgekehrt versucht. Im Blitzbasic.com Archiv bin ich fündig geworden und habe eine kleine RC4 Funktion gefunden, die ich nach PHP umschreiben wollte. Aber beide Funktionen bringen unterschiedliche Ergebnisse, obwohl ich sie 1:1 übertragen habe. Ich denke das liegt an PHP, irgendein Detail das ich übersehen habe. Vielleicht findet ja einer von euch das Problem. Hier die Codes:

PHP

Code: [AUSKLAPPEN]

<?php

Function RC4($inp, $key)
{
   $S = Array();
   $K = Array();

    for($i=0;$i<256;$i++){
     $S[$i] = $i;
    }

   $j = 0;

    for($i=0;$i<256;$i++){
       if($j>strlen($key)){
           $j = 0;
        }
        $K[$i] = ord($key[$j]);
        $j++;
    }

   $j = 0;

    for($i=0;$i<256;$i++){
       $j = ($j+$S[$i]+$K[$i]) & 255;
        $temp =  $S[$i];
        $S[$i] = $S[$j];
        $S[$j] = $temp;
    }

   $i = 0;
   $j = 0;
    $x = 0;
    for($x=0;$x<strlen($inp);$x++){
           $i = ($i+1) & 255;
        $j = ($j+$S[$i]) & 255;
        $temp =  $S[$i];
        $S[$i] = $S[$j];
        $S[$j] = $temp;
        $t = ($S[$i] + ($S[$j] & 255) ) & 255;
        $y = $S[$t];
        $output = $output.chr(ord($inp[$x]) ^ $y);
   }

   return $output;
}

$message = "testnachrichttesttest";
$key     = "testpass";


$er =  RC4($message, $key);
echo $er."<br>";

for($i=0;$i<strlen($er);$i++){
   echo ord($er[$i])."<br>";
}

echo RC4($er, $key);

?>




BlitzMax

Code: [AUSKLAPPEN]

Strict

Function RC4$(inp$, key$)
   Local S[256]
   Local K[256]

   Local i,j,t,temp,y
   Local Output$

   For i = 0 Until 256
      S[i] = i
   Next

   j = 0
   For i = 0 Until 256
      If j > Key.length
          j = 0
      EndIf
      K[i] = key[j]
      j:+ 1
   Next

   j = 0
   For i = 0 Until 256
      j = ( j + S[i] + K[i] ) & 255
      temp = S[i]
      S[i] = S[j]
      S[j] = temp
   Next

   i = 0
   j = 0
   For Local x:Int = 0 Until Inp.length
      i = (i + 1) & 255
      j = (j + S[i]) & 255
      temp = S[i]
      S[i] = S[j]
      S[j] = temp
      t = (  S[i] + ( S[j] & 255 )  ) & 255
      y = S[t]
      Output:+ Chr(inp[x] ~ Y)
   Next
   
   Return Output$
EndFunction


Local message:String = "testnachrichttesttest"
Local key:String  = "testpass"
Local er:String

er = RC4(Message, Key)
Print er
For Local i:Int = 0 Until er.length
   Print er[i]
Next

Print RC4(er, Key)



Entschlüsseln tut er sie in beiden Versionen, aber der verschlüsselte String ist unterschiedlich.
Bin ratlos, danke für jede Hilfe.
Mfg
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Justus

BeitragMi, März 07, 2007 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Polyalphabetische Chiffrierung für BMAX & PHP
Vielleicht erspart es dir ja etwas Arbeit...

Suco-X

Betreff: .........

BeitragMi, März 07, 2007 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, mir wäre es trotzdem lieber, wenn ich wüßte, was an diesen scheinbar identischen Codes so unterschiedlich ist. Klammer falsch gesetzt oder sonstiges. Ist ja auch für kommende Codekonvertierungen von Nutzen. Danke jedenfalls.
Mfg
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

FOODy

BeitragMi, März 07, 2007 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Scheinbar liegt es an den Stellen:

BlitzMax:
Code: [AUSKLAPPEN]
   For i = 0 Until 256
      If j > Key.length
          j = 0
      EndIf
      K[i] = key[j]
      j:+ 1
   Next


PHP:
Code: [AUSKLAPPEN]
    for($i=0;$i<256;$i++){
       if($j>strlen($key)){
           $j = 0;
        }
        $K[$i] = ord($key[$j]);
        $j++;
    }


Da müsste bei beiden >= stehen und nicht >.
(Da sonst über den String hinaus der wert gezogen wird)

Funzt jedenfalls bei mir jetzt bei beiden gleich.



Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Suco-X

Betreff: .....

BeitragMi, März 07, 2007 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Hast recht, danke. Jetzt funktioniert es. Ich war mir eigentlich sicher, dass zumindestens BlitzMax bei solchen Fehlern etwas sagen würde.
Mfg
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Smily

BeitragDo, März 08, 2007 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe gerade mal versuch den Code nach Blitzbasic umzuschreiben.
Aber irgendwas scheine ich falsch zu machen:

Code: [AUSKLAPPEN]
Local message$ = "testnachrichttesttest"
Local key$ = "testpass"


er$ = RC4(Message, Key)
Print er

Print RC4(er, Key)


Function RC4$(inp$, key$)
   Local S$[256]
   Local K$[256]

   Local i,j,t,temp$,y
   Local Output$

   For i = 0 To 256
      S[i] = i
   Next

   j = 0
   For i = 0 To 256
      If j => Len(Key)
          j = 0
      EndIf
      K[i] = Mid$(key$,j, 1)
      j = J + 1
   Next

   j = 0
   For i = 0 To 256
      j = ( j + S[i] + K[i] ) And 255
      temp = S[i]
      S[i] = S[j]
      S[j] = temp
   Next

   i = 0
   j = 0
   For x = 0 To Len(inp$)
      i = (i + 1) And 255
      j = (j + S[i]) And 255
      temp = S[i]
      S[i] = S[j]
      S[j] = temp
      t = (  S[i] + ( S[j] And 255 )  ) And 255
      y = S[t]
      Output = Output + Chr(mid$(inp,x,1) Xor Y)
   Next
   
   Return Output$
End Function 
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

Suco-X

Betreff: .....

BeitragDo, März 08, 2007 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz lieber den original Code als Vorlage, der kommt dem BB Code näher:
http://www.blitzbasic.com/code...?code=1711
Mfg
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Smily

BeitragDo, März 08, 2007 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ah ich habs jetzt.
Danke Very Happy
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