Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#15

Re: Buchstaben sortieren aus einem Memofeld

  Alt 27. Aug 2009, 06:11
Da es scheinbar nicht zwingend darum geht, ein Memofeld zu sortieren, sondern einen Eintrag in der INI-Datei zu verstecken...

MKinzler hat es schon geschrieben, dass es dafür fertige Verschlüsselungsverfahren gibt. Um INI-Einträge vor "normalen" neugierigen Benutzern zu schützen, hatte ich schon länger eine einfachen 8-Bit Verschlüsselung gebastelt. Dies ist natürlich überhaupt nicht sicher, gegen erfahrene Angriffe. Aber schützt wirksam vor neugierigen Otto-Normal-PC-Anwendern

Der übergebene String kann auch Memo.Text sein, da Sonderzeichen wie Linefeed, Tab oder Return kein Problem sind. Der "verschlüsselte" Text wird als Hex-String ausgegeben, damit ein speichern in einer INI-Datei kein Problem ist.

Delphi-Quellcode:
function StrToCryptHex(Text: String; XorVal : Byte): String;
var
  i, Count : Integer;
  b : Byte;
begin
  Count := Length(Text);
  Result := '';
  for i := 1 to Count do begin
    b := Ord(Text[i]);
    XorVal := b XOR XorVal;
    Result := Result + IntToHex(XorVal, 2);
  end;
end;

function CryptHexToStr(Text: String; XorVal : Byte): String;
var
  i, Count : Integer;
  b : Byte;
begin
  Count := Length(Text) div 2;
  Result := '';
  for i := 0 to Count-1 do begin
    b := StrToInt('$'+Copy(Text, i*2+1, 2));
    XorVal := b XOR XorVal;
    Result := Result + Chr(XorVal);
    XorVal := b;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  XorVal = $AA; // beliebiger Bytewert
var
  AString : String;
begin
  AString := 'Dieser Text wird für normale PC-Anwender versteckt.';
  // Testanzeige
  ListBox1.Items.Add(AString);
  // "Verschlüsseln"
  AString := StrToCryptHex(AString, $AA);
  // Ergebnis
  ListBox1.Items.Add(AString);
  // "Entschlüsseln"
  AString := CryptHexToStr(AString, $AA);
  // Ursprung wieder hergestellt
  ListBox1.Items.Add(AString);
end;
  Mit Zitat antworten Zitat