Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm zur Verschlüsselung (https://www.delphipraxis.net/92940-programm-zur-verschluesselung.html)

sebjensen 29. Mai 2007 09:31


Programm zur Verschlüsselung
 
Hallo.

Ich wollte mal wieder zru Programmiersprache Delphi zurückkehren, nach Ausflügen mit den Programmiersprachen Scheme, C, Java, Prolog, Python, ...

Ich bräuchte ine ganz einfache Verschlüsselungssoftware. Die einen String einliest und danach verschlüsselt wieder ausgibt und natürlich auch anders herum. Die Verschlüsselung soll wirklich simpel sein. Man nehme den ASCII-Code im Dezimalcode und zähle einfach den Wert 10 dazu.

Leider habe ich der Zeit so einiges an Delphi verlernt und bekomme das einfach nicht zusammengebastelt. Ich würde mich daher freuen, wenn mir einer bei der Erstellung helfen könnte.

TeronG 29. Mai 2007 09:42

Re: Programm zur Verschlüsselung
 
Da sollte es schon einiges im Forum geben

extreme einfach:
Delphi-Quellcode:
function Codestr (Text:String; PW:Byte): String;//erzeugt steuerzeichen nur in hexform in ini's schreiben
var
  s: String;
  i: Integer;
begin
  If PW > 32 then PW:=32;
  If PW < 1 then PW:=1;
  // Kodieren
  s:=Text;
  for i:=1 to length(s) do
    s[i]:=char(PW Xor Ord(s[i]));
    result := s;
end; {Codestr}

viel besser RC4: (glaube ist von Hagen)

Delphi-Quellcode:
function Codestr (Text, PW:String): String;
var
  x:   TRC4Context;
  str2: string;
begin
  setLength(str2,length(text));
  _RC4Init(x,PW);                             // Init
  _RC4Code(x, text[1], str2[1], Length(text)); // vers und entchlüsseln
  FillChar(x, SizeOf(x), 0);                 // Done // war eigene procedure
  result := str2;
end;

procedure _RC4Init(var RC4: TRC4Context; const Key: String);
var
  R,S,T,K: Byte;
  U,L: Integer;
begin
  L := Length(Key);
  with RC4 do
  begin
    I := 0;
    J := 0;
    for S := 0 to 255 do D[S] := S;
    R := 0;
    U := 0;
    for S := 0 to 255 do
    begin
      if U < L then K := PByteArray(Key)[U] else K := 0;
      Inc(U);
      if U >= L then U := 0;

      Inc(R, D[S] + K);
      T   := D[S];
      D[S] := D[R];
      D[R] := T;
    end;
  end;
end;

procedure _RC4Code(var RC4: TRC4Context; const Source; var Dest; Count: Integer);
var
  S: Integer;
  T: Byte;
begin
  with RC4 do
    for S := 0 to Count -1 do
    begin
      Inc(I);
      T := D[I];
      Inc(J, T);
      D[I] := D[J];
      D[J] := T;
      Inc(T, D[I]);
      TByteArray(Dest)[S] := TByteArray(Source)[S] xor D[T];
    end;
end;
EDIT: :gruebel: eigentlich hätte ich nur auf die Suche versweisen sollen/müssen ....


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz