![]() |
Re: Buchstaben sortieren aus einem Memofeld
Irgendwie habe ich Schwierigkeiten, deine Problemstellung zu verstehen.
Ausgehend von deinem Beispiel Zitat:
Ich vermute, ich habe das große Ganze noch nicht erfasst. |
Re: Buchstaben sortieren aus einem Memofeld
Ich möchte gern, dass mein Programm einen Text nimmt und ihn unlesbar macht...
niemand weiß was aEEeeeeeghiinnnprstttz heißt daher soll der Text in dieser Form gespeichert werden. Damit man den Text rekonstruieren kann muss natürlich auch die Position jedes Buchstabens und jedes Leerzeichens...Satzzeichens allgemein gespeichert werden... hast du nun verstanden? Text rein--> Sinnlos raus die speicherung soll dann in ner ini oder was weiß ich vorgenommen werden aber das ist ja neben sächlich...(der sinnlose Text z.B. in ner txt und die zahlen in ner ini oder nem eigenen format...) |
Re: Buchstaben sortieren aus einem Memofeld
Andere Lösung:
Wende z.b. ![]() Wenn du es so machst, könntest du denn String aber auch zufällig verwirbeln:
Delphi-Quellcode:
Das würde mit weniger Vertauschungen als z.B. Bubblesort auskommen (randomize nicht vergessen).
function Wirbel(x: String): String;
var i: integer; procedure tausche(a, b: integer); var temp: char; begin temp := result[a]; result[a] := result[b]; result[b] := temp; merke(a, b); end; begin if length(x) > 1 then begin result := x; for i := 1 to length(x) do tausche(i, random(length(x))+1); end; end; MfG, Bug PS: Es ist natürlich klar, dass das alles keine Verschlüsselung ist, sondern eher eine "Verschlüsselung" :zwinker: |
Re: Buchstaben sortieren aus einem Memofeld
Für die Verschlüsselung gibt es eh besser Methoden (§DES, AES, ...) schau dir mal DEC an.
|
Re: Buchstaben sortieren aus einem Memofeld
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; |
Re: Buchstaben sortieren aus einem Memofeld
Zitat:
Übrigens meint mkinzler mit §DES nur 3DES :D Also ich würde Twofish oder AES verwenden, weil sie sicher und schnell sind. Ich mein, warum auf Sicherheit verzichten, wenn es nur etwas anders ist :P
Delphi-Quellcode:
MfG
function Verschluesseln(AKlartext : string; ACipher : TDECCipher) : string;
begin Result := ACipher.EncodeBinary(AKlartext, TFormat_HEXL); ACipher.Done; end; function Go : string; const SRC = '....' // Dein Klartext var C : TDECChipher; begin C := TCipher_Rijndael.Create; try C.Mode := cmCTSx; Result := Verschluesseln(SRC, C); finally C.Free; end; end; xZise |
Re: Buchstaben sortieren aus einem Memofeld
Das is alles wunderbar, aber beantwortet nicht meine frage, ich danke euch mal für die vielen posts, doch ich wollte eigentlich meine idee eines Schlüssel-Schloss prinzips durchbringen...
Also nochmal... Muss ich alle Zeichen einzeln überprüfen lassen oder gibt es eine Zeichen Bibliothek in delphi... mfg der Fussel :) |
Re: Buchstaben sortieren aus einem Memofeld
Delphialphabet ist mir nicht bekannt.
Aber es gibt LowerCase() und UpperCase() und die Funktion Chr() und eine Ansii-Tabelle. Damit kannste locker eine Schleifefühlen und brauchst nur nach z.B. checken ob:
Delphi-Quellcode:
Mal ein Beispiel. Eine--->eEin.
if LowerCase(Text[i])=AlphaBet[j] then
Ne Idee wäre, dass Speichern der genauen Position nur des 1. Zeichens und danach den Positionsunterschied. Nach dem Beispiel: 2=>1=>1=>-3 |
Re: Buchstaben sortieren aus einem Memofeld
Hallo Fussel,
so meinte ich das in meinem Beitrag #9:
Delphi-Quellcode:
Die Kommentare sollten dir helfen, den Quelltext zu verstehen.
var
SL: TStringList; InputText: string; OutputText: string; i: Integer; begin SL := TStringList.Create; try InputText := MemoInput.Text; // Buchstaben und zugehörige Positionen in der Stringliste ablegen // (die Positionen werden in SL.Objects[] gespeichert) for i := 1 to Length(InputText) do SL.AddObject (InputText[i], Pointer(i)); // Stringliste nach den Buchstaben sortieren SL.Sort; // Ausgabetext dimensionieren SetLength (OutputText, SL.Count); // Zeichen für Zeichen aus der Stringliste holen und über die // gespeicherte Position in den Ausgabestring einsetzen for i := 0 to SL.Count - 1 do OutputText[Integer(SL.Objects[i])] := SL[i][1]; ShowMessage (OutputText); finally SL.Free; end; end; Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz