[gelöst] einfache Verschlüsselung

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

[gelöst] einfache Verschlüsselung

Beitrag von Scotty »

Kann mir jemand eine einfache String-Verschlüsselung empfehlen? Ich vermute, dass mein mod-Ansatz verbesserungsfähig ist, will aber keine extra Pakete installieren. Prinzipiell geht es darum, eine Wortliste so zu verschlüsseln, dass nicht jeder Anwender diese lesen kann. Dass die Verschlüsselung leicht geknackt werden kann, ist, nicht zuletzt wegen open source, klar und unproblematisch.

Code: Alles auswählen

function Decrypt(aValue:string):string;
begin
  Result:='';
  for i:=1 to UTF8Length(aValue) do
    Result:=Result+chr(ord(UTF8Copy(aValue,i,1)) mod 42);
end;
Zuletzt geändert von Scotty am Do 29. Jul 2010, 14:07, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: einfache Verschlüsselung

Beitrag von theo »

Ich hab unter Delphi öfter mal den Code unten verwendet.
UTF8-Zeug brauchst du hier nicht! Ist schädlich! Einfach nur den String als Char-Folge betrachten.

Code: Alles auswählen

function XORCrypt(Data, Key: string): string;
var
  KeyLen: INTEGER;
  i: INTEGER;
begin
  KeyLen := Length(Key);
  for i := 1 to Length(Data) do
    Data[i] := Chr(Ord(Data[i]) xor Ord(Key[(i mod KeyLen) + 1]));
  Result := Data;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var Res:String;
begin
 Res:=XORCrypt('öäüakak','abrakadabra');
 Caption:=Res;
 Edit1.text:=XORCrypt(Res,'abrakadabra')
end;
Falls es nur als Wort-Vergleich dienen soll, und nicht "entschlüsselbar" sein soll, kann vllt. das helfen:
http://www.efg2.com/Lab/Library/UseNet/1999/0909.txt" onclick="window.open(this.href);return false;

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: einfache Verschlüsselung

Beitrag von Scotty »

Sieht genauso aus, wie ich das gern hätte. Leider kann ich die Daten so nicht speichern. Ich enkodiere alle Worte einzeln und Add()e diese zu einer Stringliste im Inifile-Format. Die wird per SaveToFile gespeichert, hat dann aber mehr Zeilen als vorher (und beim Einlesen als Inifile stimmt es natürlich auch nicht). Scheinbar darf das mod kein CRLF erzeugen.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: einfache Verschlüsselung

Beitrag von theo »

Schon klar. Also entweder als Binärdaten speichern oder nochmal kodieren. z.B. mit
EncodeBase64 / DecodeBase64. Kannst du aus den Synapse Sourcen kopieren.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: einfache Verschlüsselung

Beitrag von Scotty »

Spitze! EncodeBase64 / DecodeBase64 hätte mir eigentlich auch gelangt, aber so ist das ja fast sicher 8)
Besten Dank, Theo.

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: einfache Verschlüsselung

Beitrag von theo »

Scotty hat geschrieben:EncodeBase64 / DecodeBase64 hätte mir eigentlich auch gelangt,
Naja, das ist nat. nur eine Kodierung (wie UTF-8 auch) und keine Verschlüsselung, in dem Sinne, dass es dazu einen Key bräuchte.

Antworten