Hallo,
ich habe im StringAsHex mal etwas geändert.
Weil ein TextZeichen = 1 Byte und daraus werden 2 HexZeichen.
Delphi-Quellcode:
function StringAsHex(Value : string) : string;
var
i : integer;
begin
result:='';
for i := 1 to Length(Value) do
begin
Result := result + IntToHex(Ord(Value[i]), 2);
end;
end;
Vor dem Entschlüsseln mußt Du dann die HexWerte wieder in ihre Ursprungswerte wandeln.
Delphi-Quellcode:
FUNCTION HexToByte(s:shortstring):Byte;
Const
hex : string = '0123456789abcdef';
VAR
num:byte;
BEGIN
s:= lowercase(s);
num:=(pos(s[1],hex)-1)*16+(pos(s[2],hex)-1);
Result:=byte(num);
END;
Delphi-Quellcode:
function HexToString(HexString:String):String;
var
i: Integer;
begin
for i:= 1 to lenght(HexString) div 2 do
begin
result:=result + chr(HexToByte(HexString[i]+HexString[i+1]));
end;
end;
Delphi-Quellcode:
procedure TForm1.hatVerschluesselnClick(Sender: TObject);
begin
zText1:=hatMplain.Text;
setLength(zText2,length(zText1));
hatRC4.RC4Init(hatRC4, hatEschluessel.Text);
hatRC4.RC4Code(hatRC4, zText1[1], zText2[1], Length(zText1));
hatMcipher.Text:=StringAsHex(zText2);
end;
Delphi-Quellcode:
procedure TForm1.hatEntschluesselnClick(Sender: TObject);
begin
zText1:=HexToString(hatMcipher.Text);
setLength(zText2,length(zText1));
hatRC4.RC4Init(hatRC4, hatEschluessel.Text);
hatRC4.RC4Code(hatRC4, zText1[1], zText2[1], Length(zText1));
hatMplain.Text:=zText2;
end;
Hoffe es sind nicht allzuviele Fehler drin.
Grüße
Klaus