Cześć.
Jak wiecie zwykle radzę sobie sam. Ale nie jestem dobry nawet z lamerskiej 'xorowej enkrypcji" i coś pewnie poknociłem. Ponieważ taki kod z PHP:
function unmask($text) {
$length = ord($text[1]) & 127;
if($length == 126) {
$masks = substr($text, 4, 4);
$data = substr($text, 8);
}
elseif($length == 127) {
$masks = substr($text, 10, 4);
$data = substr($text, 14);
}
else {
$masks = substr($text, 2, 4);
$data = substr($text, 6);
}
$text = "";
for ($i = 0; $i < strlen($data); ++$i) {
$text .= $data[$i] ^ $masks[$i%4];
}
return $text;
}
Prxetłumaczyłem na Delphi jako:
function UnMask(const Text : string) : string;
var
Length, I : integer;
Masks, Data : string;
begin
Length := Ord(Text[2]) and 127;
if Length = 126 then
begin
Masks := Copy(Text, 5, 4);
Data := Copy(Text, 9, MaxInt);
end
else
begin
if Length = 127 then
begin
Masks := Copy(Text, 11, 4);
Data := Copy(Text, 15, MaxInt);
end
else
begin
Masks := Copy(Text, 3, 4);
Data := Copy(Text, 7, MaxInt);
end;
end;
Result := '';
for I := 1 to System.Length(Data) do
begin
Result := Result + Chr(Ord(Data[I]) xor Ord(Masks[I mod 4]));
end;
end;
Jednak plik test.aaa
zamiast zdekodować mi tak jak PHP czyli:
{"message":"testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, testujemy, koniec","name":"olesio","color":"007AFF"}
Decoduje mi niewłaściwie, tak jak widzicie. Dołączyłem plik i przykładowy kod z exekiem w Delphi 7 do testów.
Pewnie rozwiązanie jest banalne, ale ze względu na wczesną porę i mało snu w nocy. Sam nie potrafię na nie wpaść. A próbuję po raz pierwszy w życiu zaznajomić się z WebSocketami i analizuje różne rzeczy. Korzystając z przykładowego kodu w PHP znalezionego w Google. Starając się docelowo później napisać w Delphi prosty klient prostego serwera chatu w PHP opartego na WebSocketach. Z góry dziękuję za wszelkie przykłady prawidłowego kodu.