Thema: Delphi RC4 Textlänge

Einzelnen Beitrag anzeigen

Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: RC4 Textlänge

  Alt 3. Jan 2007, 12:35
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
Klaus
  Mit Zitat antworten Zitat