Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zufallsnamen erzeugen... (https://www.delphipraxis.net/3021-zufallsnamen-erzeugen.html)

BrainCode 18. Feb 2003 21:18

Ja genau, soll denn der User den Sourcecode bearbeiten können, oder habe ich dich falsch verstanden, NeoDeluxe???

phlux 18. Feb 2003 21:22

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.

nailor 18. Feb 2003 21:41

Zitat:

Zitat von phlux
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.

... in eine Text-Datei...

phlux 18. Feb 2003 21:42

Wenn er es aber nicht editierbar lassen will???

nailor 18. Feb 2003 21:45

heul doch :tongue:
dann kann er es von mir aus in eine Resource packen...
ich gebe mich ja schon geschlagen!

BrainCode 18. Feb 2003 21:48

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 ;-) )

phlux 18. Feb 2003 21:53

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!

nailor 18. Feb 2003 21:59

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....

phlux 18. Feb 2003 22:03

Als unter dem Schema sagt mir das was also einfache XOR Verschlüsselung (vom Prinzip her zumindest) zeig mal ein bisschen Code :wink:

nailor 18. Feb 2003 23:26

Liste der Anhänge anzeigen (Anzahl: 1)
Hab ich mal gemacht, als mir langweilg war:
Delphi-Quellcode:
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.
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: www.cityinthesky.co.uk - Code. Ist echt top!!!

PS: Anwendungsbeispiele:
Delphi-Quellcode:
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
verschlüsselungen und entschlüsselungen (der gleichen art) kann man addieren, wenns 0 gibt, ist der Text wieder "plain".

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.
Seite 4 von 5   « Erste     234 5      

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