AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zufallsnamen erzeugen...

Ein Thema von NeoDeluxe · begonnen am 18. Feb 2003 · letzter Beitrag vom 19. Feb 2003
 
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#39
  Alt 18. Feb 2003, 22:26
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:
Angehängte Dateien
Dateityp: txt keyfile.txt (1,7 KB, 6x aufgerufen)
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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-2025 by Thomas Breitkreuz