Das sieht gut aus und müsste funktionieren.
Die Vermutung liegt nahe das deine
TCP/
IP Komponente die Daten die übertragen werden nicht als binäre Daten akzeptiert. Benutze mal
Delphi-Quellcode:
procedure TMainForm.ClientEncryptData(Sender: TObject; PA: TProtocolAdapter; var Buffer; const Size: Integer);
var
ARCx: TRCxContext;
begin
RCxInit(ARCx,'<Passwort>');
RCxEncode(ARCx,Buffer,Buffer,Size);
RCxDone(ARCx);
ShowMessage( TFormat_HEX.Encode(Buffer, Size) );
end;
procedure TMainForm.ClientDecryptData(Sender: TObject; PA: TProtocolAdapter; var Buffer; const Size: Integer);
var
ARCx: TRCxContext;
begin
ShowMessage( TFormat_HEX.Encode(Buffer, Size) );
RCxInit(ARCx,'<Passwort>');
RCxDecode(ARCx,Buffer,Buffer,Size);
RCxDone(ARCx);
end;
Um die Daten im Buffer nach der Ver-schlüsselung mit denen VOR der Ent-Schlüsselung zu vergleichen. Wir testen also ob deine
TCP/
IP Komponenten die Daten NICHT verändert.
Wird nämlich der Buffer intern durch die Komponete als zb. LongString verwaltet dann kann eine #0 im Buffer diesen Datenstring verkürzen. Oder irgend ein anderer Formatierer konvertiert die daten so das alle x Zeichen ein Zeilenumbruch eingefügt wird, auch die verändert die Daten. Solche Datenveräderungen führen dazu das die Entschlüsselung fehlschlägt und ist bisher die häufigste Ursache für Supportanfragen an mich gewesen.
Gruß Hagen