Julian von Mendel: Wer kann mir eine VB-Funktion in PHP "übersetzen" ?

Beitrag lesen

Hallo!

Public Function Entschluesseln(ByVal Wert As String) As String

function Entschluesseln{
$Wert = (string) "";

$Wert ist ein Parameter, nicht eine leere Variable...
Es heißt function Entschluesseln($Wert).

Dim key As String
         key = "wsxnAoedc1jief6xQit1nbhu6Jcpo1bvfq5dhgt0novB1rtlA" & _
                 "hjSalkgXiv2ater7ecsn2mlkd7Piez3ypkj8hacd3fghj2eiu" & _
                 "ndmfsdjtppl3hghj8sgfh3lglg8srtm6lokj1awsd6efMv3xb" & _
                 "nzgfnCkij4rm4lodp9kjud4egdn9Nplk9nhgr4tzgh9raid4s" & _
                 "loVpsjsix5ejf5gdmx0apFe5funb0irYm2fsdl7wzwe0hsTn5" & _
                 "qaA7lp"

$key[1]="hjSalkgXiv2ater7ecsn2mlkd7Piez3ypkj8hacd3fghj2eiu";
$key[2]="ndmfsdjtppl3hghj8sgfh3lglg8srtm6lokj1awsd6efMv3xb";
$key[3]="nzgfnCkij4rm4lodp9kjud4egdn9Nplk9nhgr4tzgh9raid4s";
$key[4]="loVpsjsix5ejf5gdmx0apFe5funb0irYm2fsdl7wzwe0hsTn5";

Hmm..? Oben werden die Strings verkettet, nicht in ein Array geschrieben.
Also $key = "wsxnAoedc1jief6xQit1nbhu6Jcpo1bvfq5dhgt0novB1rtlA".
"hjSalkgXiv2ater7ecsn2mlkd7Piez3ypkj8hacd3fghj2eiu"...;

$decode=(string)"";
$CodeZeile=(string)"";
$codiert=(string)"";
$A=(integer)"";
$B=(integer)"";
$C=(integer)"";
$D=(integer)"";
$s=(integer)"";
$Erg=(integer)"";

Schaut ja sehr seltsam aus, auch wenn es wohl funktioniert. Hier fände ich settype() schöner. Das mit dem expliziten Definieren als String ist aber glaube ich unwichtig.

Entschluesseln = ""
             Exit Function
$Entschlüsseln="";
exit; //exit aber nur, wenn das Script wirklich NUR aus der Funktion besteht

Bla. Da wäre "return FALSE;" richtiger, denke ich.

while(strlen($Wert)>strlen($key)){
$key=$key.$key;

$key .= $key; ist kürzer.

A = InStr(base64, (Mid(CodeZeile, s + 0, 1))) - 1
             B = InStr(base64, (Mid(CodeZeile, s + 1, 1))) - 1
             C = InStr(base64, (Mid(CodeZeile, s + 2, 1))) - 1
             D = InStr(base64, (Mid(CodeZeile, s + 3, 1))) - 1

for($s=1;s>strlen($CodeZeile);s+4){
// Ist dies hier wichtig oder kann man das auch anders lösen?
// Etwas vergleichbares wie die InStr-Funktion gibt es in PHP nicht

strpos hat doch die gleiche Funktion, oder nicht?

If B >= 0 Then decode = decode & Chr((A * 4 + Int(B / 16)) And 255)
If C >= 0 Then decode = decode & Chr((B * 16 + Int(C / 4)) And 255)
If D >= 0 Then decode = decode & Chr((C * 64 + D) And 255)

if($B>=0){
$decode=$decode.chr(($A*4)+($B/16)).chr(255);
}

if($C>=0){
$decode=$decode.chr(($B*16)+($C/4)).chr(255);
}

if($D>=0){
$decode=$decode.chr(($C*64)+$D).chr(255);
}

In PHP gibt es .=, das sparrt dir viel Wiederholungsarbeit. Außerdem ist das mit deinem Chr etwas vollkommen anderes. Bei dir kommen da zwei Zeichen raus, oben nur eins, weil alles von dem chr() eingeschlossen wurde. Das "And 255" ist vermutlich das gleiche wie "And True", folglich kommt immer 0 oder 1 raus und wird dann in ein Zeichen umgewandelt? Ich bin mir nicht sicher, das Konstrukt ist etwas seltsam.

Erg = Asc(Mid(decode, s, 1)) Xor Asc(Mid(myKey, s, 1))
$Erg = chr(substr(substr($decode,$s,1),0,1))XOR(chr(substr(substr($mykey,$s,1),0,1)));

Wo $myKey herkommt weiß ich jetzt immer noch nicht...

Entschluesseln = Codiert
$Entschlüsseln=$Codiert;

Das musst du mit return $Codiert; lösen.

Schöne Grüße
Julian

--
"Hex is for sissies. Real men use binary. And the most hardcore types use only z
eros - uppercase zeros and lowercase zeros." - Tomasz Sowinski