BlitzMax zu PHP
Übersicht Sonstiges
 Sonstiges  Smalltalk
 Smalltalk|   | Suco-XBetreff: BlitzMax zu PHP |  Mi, März 07, 2007 13:02 Antworten mit Zitat   | 
|---|---|---|
| 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 |  Mi, März 07, 2007 13:30 Antworten mit Zitat   | 
|---|---|---|
| Polyalphabetische Chiffrierung für BMAX & PHP Vielleicht erspart es dir ja etwas Arbeit... | ||
|   | Suco-XBetreff: ......... |  Mi, März 07, 2007 14:19 Antworten mit Zitat   | 
|---|---|---|
| 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 |  Mi, März 07, 2007 14:23 Antworten mit Zitat   | 
|---|---|---|
| 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-XBetreff: ..... |  Mi, März 07, 2007 14:36 Antworten mit Zitat   | 
|---|---|---|
| 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 |  Do, März 08, 2007 17:07 Antworten mit Zitat   | 
|---|---|---|
| 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-XBetreff: ..... |  Do, März 08, 2007 17:12 Antworten mit Zitat   | 
|---|---|---|
| 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 |  Do, März 08, 2007 17:24 Antworten mit Zitat   | 
|---|---|---|
| ah ich habs jetzt. Danke   | ||
| 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 | ||
Übersicht
 Sonstiges
 Sonstiges  Smalltalk
 Smalltalk
					Powered by phpBB © 2001 - 2006, phpBB Group
				



