AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiverschlüsselungs DLL

Ein Thema von hamZta · begonnen am 8. Sep 2004 · letzter Beitrag vom 24. Sep 2009
Antwort Antwort
Seite 1 von 3  1 23      
hamZta

Registriert seit: 5. Sep 2004
7 Beiträge
 
Delphi 7 Personal
 
#1

Dateiverschlüsselungs DLL

  Alt 8. Sep 2004, 18:04
Am besten ich paste den ganzen Code mal hier rein
Delphi-Quellcode:
{     Dateiverschlüsselung, by hamZta                              }
{     - Zum Verschlüsseln CryptFile(datei, neuerName) verwenden    }
{     - Zum Entschlüsseln DeCryptFile verwenden                    }
{     Verschlüsselt und Entschlüsselt 500 Dateien in 6 Sekunden    }
library dll2;
  

uses
  SysUtils,
  Classes;
  

{$R *.res}
//Das Array in dem die Werte gespeichert sind
var key: Array[1..6] Of Byte;

function SetKey(k1,k2,k3,k4,k5,k6: Integer):integer; stdcall;
begin
    //Alle Werte füllen
    key[1] := k1;
    key[2] := k2;
    key[3] := k3;
    key[4] := k4;
    key[5] := k5;
    key[6] := k6;
end;

//Funktion zum Verschüsseln einer Datei
// oldFile: PChar = Die Datei die verschlüsselt werden soll
// newFile: PChar = Der Name den die verschlüsselte Datei bekommen soll
Function CryptFile(oldFile, newFile: PChar): integer; stdcall;
var oFile, nFile: File of Byte;
var cByte, currKey: Byte;
var i: Integer;
begin
  //Die neue Datei schreiben
  AssignFile(nFile, String(newFile));
  ReWrite(nFile);
  //Die alte Datei öffnen
  AssignFile(oFile, String(oldFile));
  Reset(oFile);
  //Hauptvorgang
  //Die ganze alte Datei durchgehen
  for i := 0 to FileSize(oFile)-1 do
    begin
      //Ein Byte auslesen
      Read(oFile,cByte);
      //Den aktuellen Keywert verändern
      currKey := currKey + 1;
      //Der Key ist nur 6stellig
      if currKey > 6 then currKey := 1;
      //Das Byte mithilfe von Xor und dem aktuellem Keywert verschlüsseln
      cByte := cByte Xor key[currKey];
      //Und in die neue Datei schreiben
      Write(nFile,cByte);
    end;
  closefile(oFile);
  closefile(nFile);
end;

//Die Funktion DeCryptFile ist genau dieselbe Funktion wie CryptFile
//(Existiert eigentlich nur der Übersicht halber :D)
Function DeCryptFile(oldFile, newFile: PChar): integer; stdcall;
var oFile, nFile: File of Byte;
var cByte, currKey: Byte;
var i: Integer;
begin
  //Write new File
  AssignFile(nFile, String(newFile));
  ReWrite(nFile);
  //Read old File
  AssignFile(oFile, String(oldFile));
  Reset(oFile);

  //Hauptvorgang
  for i := 0 to FileSize(oFile)-1 do
    begin
      Read(oFile,cByte);
      currKey := currKey + 1;
      if currKey > 6 then currKey := 1;
      cByte := cByte Xor key[currKey];
      Write(nFile,cByte);
    end;
  closefile(oFile);
  closefile(nFile);
end;

exports
  CryptFile name 'CryptFileA',
  DeCryptFile name 'DeCryptFileA',
  SetKey name 'SetKeyA';

begin

end.
Vielleicht kann ja irgendwer was damit anfangen

hamZta

[edit=Chakotay1308]Delphi- ([delphi]) statt Code-Tags ([code]). Mfg, Chakotay1308[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von titus
titus

Registriert seit: 5. Apr 2004
Ort: Freiburg
232 Beiträge
 
#2

Re: Dateiverschlüsselungs DLL

  Alt 8. Sep 2004, 18:07
hä?
Zitat:
//Die Funktion DeCryptFile ist genau dieselbe Funktion wie CryptFile
//(Existiert eigentlich nur der Übersicht halber )
Daniel L.
'-'
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Dateiverschlüsselungs DLL

  Alt 8. Sep 2004, 18:09
Das verstehe ich auch nicht ganz, ist es also so, wie bei der XOR-Verschlüsselung, dass man eine Prozedur hat, die beides erledigt?

Wie sicher ist denn dieses Verfahren?

Edit: Das ist ja XOR
  Mit Zitat antworten Zitat
hamZta

Registriert seit: 5. Sep 2004
7 Beiträge
 
Delphi 7 Personal
 
#4

Re: Dateiverschlüsselungs DLL

  Alt 8. Sep 2004, 18:09
dachte mir das das unverständlich ist
beispiel:
man hat eine Datei, verschlüsselt diese mit CryptFile("datei.bmp","verschluesselt.bmp").
jetzt könnte man diese Datei auch wieder mit CryptFile("verschluesselt.bmp","datei.bmp") in den Originalzustand versetzen, aber da dies bei langem Code verwirrend ist hab ich die 2te Funktion, DeCryptFile, gemacht.

verständlicher?
  Mit Zitat antworten Zitat
Benutzerbild von titus
titus

Registriert seit: 5. Apr 2004
Ort: Freiburg
232 Beiträge
 
#5

Re: Dateiverschlüsselungs DLL

  Alt 8. Sep 2004, 19:16
Aso, für einen selber, damit man merkt: Aha die Datei hab ich ent bzw. verschlüsselt?
Richtig?

mfG
Daniel L.
'-'
  Mit Zitat antworten Zitat
hamZta

Registriert seit: 5. Sep 2004
7 Beiträge
 
Delphi 7 Personal
 
#6

Re: Dateiverschlüsselungs DLL

  Alt 8. Sep 2004, 19:41
richtig
das ganze ist relativ sicher.
was is denn an xor so schlecht?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Dateiverschlüsselungs DLL

  Alt 8. Sep 2004, 20:01
Zitat von hamZta:
richtig
das ganze ist relativ sicher.
was is denn an xor so schlecht?
Sicher? Also XOR ist die unsicherste Verschlüsselungsart, die ich kenne.

XOR haben wir auch schon in der Code-Library drin, siehe XORXOR.
Eine viel bessere ist RC4, das haben wir hier auch: RC4RC4 und, man kann eigentlich sagen, das Beste ist das Hier im Forum suchenDEC von Hagen Redmann(sry, falls es falsch geschrieben ist hier bekannt als negaH.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Dateiverschlüsselungs DLL

  Alt 9. Sep 2004, 11:28
Zitat:
richtig
das ganze ist relativ sicher.
was is denn an xor so schlecht?
Sorry, du meintest wohl relativ unsicher, richtig ?

Ok, ich schicke dir Daten die du dann verschlüsseln sollst. Diese Daten könnten Zb. am Anfang aus 24 Bytes Nullen bestehen. Verschlüsselst du mit deinem Algorithmus so kann ich anhand der Verschlüsselten Daten in den ersten 24 bytes DIREKT deinen Schlüssel auslesen ! Probiere es und verschlüssele mal 24 Bytes aus Nullen und schaue dir danach den Output genau an.

So, da du aber Blockweise a 24 Bytes die Datei verschlüsselst ist jeder Block unabhänig vom anderen Block. Bei einer Datei mit 24 * 256 Bytes größe ist die Wahrscheinlichkeit ca. 50% für jedes dieser Bytes das es in der Datei vorher 0 war. Sogesehen könnte man mit sehr hoher Wahrscheinlichkeit direkt aus den verschlüsselten Daten den benutzten Schlüssel berechnen. Dies ist weit weit effizienter als wenn man alle möglichen Schlüssel durchbprobieen würde. Eine Verschlüsselung gilt dann als unsicher wenn es einen Weg zum Knacken gibt der schneller als eine Brute Force Attacke ist.

Komme mir jetzt nicht mit der Aufforderung "Hagen ich habe mal eine Datei verschlüsselt, kannst du versuchen dieses zu knacken ?, NEIN kann und werde ich nicht da es DEINE Aufgabe ist UNS zu beweisen das deine Verfahren sicher ist.


Gruß Hagen

PS: scherzhaft gesagt, ich habe schon bessere Verfahren zur Speicherung eines Passwortes in einer Datei gesehen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Dateiverschlüsselungs DLL

  Alt 9. Sep 2004, 11:37
XOR ansich ist nicht schlecht, nicht im gerngsten. Es ist eine Operation die mit absolut ausgewogener Wahscheinlichkeit zwei Datenbytes miteinander verknüpf. So gesehen ist XOR sogar eine perfekt lineare Operation für Veschlüsselungen.

Das Problem mit deiner XOR Variante ist nicht die XOR Operation sondern die Daten->der Schlüsselstrom mit dem due die Nachricht verschlüsselst. Dieser ist absolut unsicher, da du
1.) direkt den Schlüssel dazu benutzt, und somit die verschlüsselten Daten einen direkten Zusammenhang zum Schlüssel + Daten bilden
2.) du jeden Block unabhänig von den anderen Blöcken verschlüsselst, und somit die Variations-Wahrscheinlichkeit für verschiedene Angriffe drastisch erhöhst.

Die RC4 Verschlüsselung ist auch eine XOR Verschlüsselung, allerdings gibt es
1.) keinen direkten Zusammenhang von Schlüssel zu den Daten + verschlüsseltem Output
2.) produziert RC4 eine kontinuierlichen Schlüsselstrom bei denen es keine Wiederholungen gibt, sprich keine Blöcke
3.) wurde RC4 von anerkannten Kryptoexperten analysiert und schon seit Jahren als sicher bestätigt

Gruß Hagen
  Mit Zitat antworten Zitat
15. Okt 2004, 20:47
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Beitrag ist nun hier in der Code-Library zu finden.
Antwort Antwort
Seite 1 von 3  1 23      


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 04:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz