Este es basicamente
Parte PHP:
Código PHP:
function DecryptStr2($str,$key)
{
$p=1;
$key_length = strlen($key);
$encoded_data = base64_decode($str);
$length = strlen($encoded_data);
for ($i = 1; $i < $length; $i++) {
$result .= chr(ord($encoded_data[i]) ^ ord($key[$p]));
$p++;
if (p > $key_length){$p=1;}
}
return $result;
}
$input=$_POST['input'];
echo DecryptStr2($input,'ClavePrivada');
Parte Delphi:
Código Delphi
[-]
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, httpsend, Synacode,
Vcl.StdCtrls,IdHash,EncdDecd;
Function xorPHP(Text: AnsiString; Pass: AnsiString): AnsiString;
var
i, p: integer;
Res: AnsiString;
begin
p := 1;
for i := 1 to length(Text) do
begin
Res := Res + ansichar(ord(Text[i]) XOR ord(Pass[p]));
Inc(p);
if p > length(Pass) then
p := 1;
end;
setlength(result, length(Res));
result := EncodeBase64(BytesOf(result), length(BytesOf(result)));
end;
function StreamToString(const Stream: TStream): string;
var
StringBytes: TBytes;
Encoding: TEncoding;
begin
Stream.Position := 0;
SetLength(StringBytes, Stream.Size);
Stream.ReadBuffer(StringBytes, Stream.Size);
Result := Encoding.UTF8.GetString(StringBytes);
end;
procedure TForm2.Button1Click(Sender: TObject);
var
Response: TMemoryStream;
Key: ansistring;
begin
Response := TMemoryStream.Create;
if HttpPostURL('127.0.0.1/test2.php', 'input='+xorPHP('Texto de prueba','ClavePrivada'), Response) then
showmessage(StreamToString(response));
end;