![]() |
Ja genau, soll denn der User den Sourcecode bearbeiten können, oder habe ich dich falsch verstanden, NeoDeluxe???
|
Das Problem ist ja das der Array irgendwann sollte er 100 Namen oder so drin haben ganz schön ungemütlich im Quelltext wird ;) ich finde sowas sollte man auslagern.
|
Zitat:
|
Wenn er es aber nicht editierbar lassen will???
|
heul doch :tongue:
dann kann er es von mir aus in eine Resource packen... ich gebe mich ja schon geschlagen! |
Am einfachsten realisierbar wäre doch eine Textdatei mit Cäsar-Verschlüsselung. Ich habe so etwas schon mal gemacht und könnte mal meinen Code posten. (@Nailor: Unser Satzgenerator, aber ohne die wesentlichen Programmteile ;-) )
|
Hülf! Die Hesse komme!!
Egal ist eure Cäsar Verschlüsselung ne einfache XOR Verschlüsselung?? Oder was habt ihr da gebastelt? Ach ja, die Strings sind immer noch mit einem Resourcen-Hacker (ResHack, zb.) editierbar, in der compilierten(!) .exe! |
Du kennst keine Cäsar-Verschlüsselung? a=b b=c... Das ist sehr schwer. Ich poste mal meinen Satzgenerator, bevor Braincode seinen postet.
PS: Du kannst auch eine 3DES-Verschlüsselung auf die Strings hetzen. Aber es gilt doch wohl der Grundsatz der Verhältnismäßigkeit. PPS: Aprops Cäsar. Ich hab mal eine mit variabler Verschiebung. Und mit variabler Verschiebungs-Verschiebung gemacht.... |
Als unter dem Schema sagt mir das was also einfache XOR Verschlüsselung (vom Prinzip her zumindest) zeig mal ein bisschen Code :wink:
|
Liste der Anhänge anzeigen (Anzahl: 1)
Hab ich mal gemacht, als mir langweilg war:
Delphi-Quellcode:
schon länger her, aus meiner Anfangszeit. Ich hab ihn jetzt 1:1 gepostet. Also keine pingeligen Anmerkungen, ich weiß (vieles) mittlerweile selbst besser. Prinzipielle Anregungen natürlich gerne. Ich nutze den Code nicht mehr, ich nehme:
unit NailCrypt;
interface type TKeyArray = Array of String; //Klasse mit dem Ergebnis TNailCrypt = Class //Die Crypt-Klasse mit Funktionen public function OpenKeyFile(Filename: String): TKeyArray; function Encrypt(Plain_Text: String; KeyToUse: TKeyArray; Offset: integer): String; function Decrypt(Crypted_Text: String; KeyToUse: TKeyArray; Offset: integer): String; end; implementation function TNailCrypt.Encrypt(Plain_Text: String; KeyToUse: TKeyArray; Offset: integer): String; var i,j: integer; //Schleifenvariablen lpt,lks,lka: integer; //Längenangaben: PlainText, KeyStrings und KeyArray begin lka := length(keytouse); //Anzahl der Schlüsselzeilen lks := Length(KeyToUse[0]); //Länge der Schlüssezeilen lpt := Length(Plain_Text); //Länge des zu verschlüsselnden Textes SetLength(Result,lpt); //Länge des Ergebnisses for i := 1 to lpt do //Den kompletten String lang for j := 1 to lks do //Die komplette Schlüssel-Zeile if Plain_Text[i] = KeyToUse[lka-1,j] then //vergleichen begin Result[i] := KeyToUse[(i-1+offset) mod (lka-1),j]; //und den entsprechenden Eintrag Break; //wählen und abbrechen end else if j = lks then //Wenn nicht gleich und alle durch Result[i] := Plain_Text[i]; //alten nehmen end; function TNailCrypt.Decrypt(Crypted_Text: String; KeyToUse: TKeyArray; Offset: integer): String; var i,j: integer; //Schleifenvariablen lct,lks,lka: integer; //Längenvariablen begin lka := Length(KeyToUse); //Anzahl der Schlüsselzeilen lks := Length(KeyToUse[0]); //Länge der Schlüssezeilen lct := Length(Crypted_Text); //Länge der zu entschlüsselnden Textes SetLength(Result,lct); //Länge des Ergebnisses for i := 1 to lct do //Den kompletten String lang for j := 1 to lks do //Die komplette Schlüssel-Zeile if KeyToUse[(i-1+offset) mod (lka-1),j] = Crypted_Text[i] then //vergleichen begin Result[i] := KeyToUse[lka-1,j]; //und den entsprechenden Eintrag Break; //wählen und abbrechen end else if j = lks then //Wenn nicht gleich und alle durch Result[i] := Crypted_Text[i]; //gleich lassen end; function TNailCrypt.OpenKeyfile(FileName: String): TKeyArray; var SomeFile: TextFile; Buffer: String; begin AssignFile(SomeFile,FileName); //File Assign Reset(SomeFile); //und Reset SetLength(Result,0); //Schlüssellänge einstellen while not eof(SomeFile) do //Die komplette File lang begin SetLength(Result, Length(Result) + 1); //Schlüssellänge erhöhen, Readln(SomeFile,Buffer); //Zeile einlesen Result[High(Result)] := Buffer; //und speichern end; closefile(SomeFile); //File Close end; end. ![]() PS: Anwendungsbeispiele:
Delphi-Quellcode:
verschlüsselungen und entschlüsselungen (der gleichen art) kann man addieren, wenns 0 gibt, ist der Text wieder "plain".
for Count := 1 to Listbox1.Items.Count do
Listbox1.Items.Strings[Count - 1] := Crypting.Encrypt(Listbox1.Items.Strings[Count - 1], Key,0); Listbox1.Items.Strings[Count - 1] := Crypting.Encrypt(Listbox1.Items.Strings[Count - 1], Key,(Count - 1) mod 10 + 1); Listbox1.Items.Strings[Count - 1] := Crypting.Encrypt(Listbox1.Items.Strings[Count - 1], Key,(Count - 1) mod 10); Listbox1.Items.Strings[Count - 1] := Crypting.Encrypt(Listbox1.Items.Strings[Count - 1], Key,Count); Listbox1.Items.Strings[Count - 1] := Crypting.Encrypt(Listbox1.Items.Strings[Count - 1], Key,Count - 1); Listbox1.Items.Strings[Count - 1] := Crypting.Encrypt(Listbox1.Items.Strings[Count - 1], Key,1); //einen davon Die Schlüsseldatei ist eine Textdatei mit allen erlaubten Zeichen. ("durchgeschüttelt"). Je mehr Zahlen, desto sicherer (obwohl das ganze nie wirklich sicher wird...). PS: ich häng mal eine an: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 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