Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ganz einfache Dateiverschlüsselung (https://www.delphipraxis.net/23526-ganz-einfache-dateiverschluesselung.html)

S2B 4. Jun 2004 13:02


Ganz einfache Dateiverschlüsselung
 
Hi @all,
wie kann ich ganz einfach eine Datei verschlüsseln und nachher wieder entschlüsseln? Ich hab zwar schon ein paar Codes mit der Suche gefunden, aber das blick ich irgendwie nicht ganz... :stupid:

Luckie 4. Jun 2004 13:04

Re: Ganz einfache Dateiverschlüsselung
 
Was hast du gefunden und was "blickst" du nicht?

S2B 4. Jun 2004 13:05

Re: Ganz einfache Dateiverschlüsselung
 
Zitat:

Zitat von Luckie
Was hast du gefunden und was "blickst" du nicht?

z.B. hab ich DEC von Hagen gefunden, aber ich weiß nicht so recht, wie ich die Komponente einstetzen soll...

MrKnogge 4. Jun 2004 14:00

Re: Ganz einfache Dateiverschlüsselung
 
ganz einfach ?

z.B. XOR

HeikoDD 4. Jun 2004 14:13

Re: Ganz einfache Dateiverschlüsselung
 
wenn du dec schon hast schau dir doch bitte das sample davon an, da ist alles enthalten was du brauchst, aber ein tip: die klassen unterstützen TStream -> TFileStream :-)

S2B 4. Jun 2004 14:26

Re: Ganz einfache Dateiverschlüsselung
 
Zitat:

Zitat von MrKnogge
z.B. XOR

Also, ich hab jetzt ne XOR-Verschlüsselung gefunden! Ich schau sie mir mal an. Danke für den Tip!

Zitat:

Zitat von HeikoDD
wenn du dec schon hast schau dir doch bitte das sample davon an, da ist alles enthalten was du brauchst, aber ein tip: die klassen unterstützen TStream -> TFileStream

Soo, womit ich nicht mehr weiß wie vorher! :wink: Ich weiß noch nicht mal, mit welchem Button man die datei decodieren kann... :?

negaH 4. Jun 2004 16:13

Re: Ganz einfache Dateiverschlüsselung
 
Delphi-Quellcode:
uses Cipher;

with TCipher_Rijndael.Create('Passwort', nil) do
try
  EncodeFile('c:\test.txt', 'c:\test.bin');
finally
  Free;
end;
Einfacher gehts ja garnicht mehr mit. Allerdings auf Grund dieser Einfachheit ist natürlich auch die Flexibilität und erreichbare Sicherheit eingeschränkt. Soll heissen das man es um einiges besser machen könnte, dafür aber dann ausgefeilterte und komplexere Techniken anwenden muß.

Obiger Vorschlag ist also eine Minimallösung die aber bei WEITEM sicherer ist als eine XOR Verschlüsselung oder andere nicht anerkannte Verfahren.

Gruß hagen

S2B 4. Jun 2004 16:15

Re: Ganz einfache Dateiverschlüsselung
 
Vielen Dank für den Code! :thuimb: Werd ihn gleich ausprobieren!

S2B 4. Jun 2004 17:24

Re: Ganz einfache Dateiverschlüsselung
 
Irgendwie funzt der Code nicht ganz! Der Compiler will irgendwie den Typ TCipher_Rijndael nicht erkennen! Den Pfad, wo die Units liegen, hab ich in den Bibliothekspfaden drin und ich hab die Units vorher auch so umgeschrieben, wie Hagen es in diesem Beitrag geschrieben hat. Kann mir da jemand weiterhelfen?

negaH 4. Jun 2004 17:42

Re: Ganz einfache Dateiverschlüsselung
 
Delphi-Quellcode:
uses Cipher;
???

Gruß Hagen

S2B 4. Jun 2004 17:52

Re: Ganz einfache Dateiverschlüsselung
 
Hab ich drinne! :wink:
Also wenn ich die Komponenten installieren will, dann werden 2 Units nicht gefunden: BigNum, BNG! :gruebel:

negaH 4. Jun 2004 19:13

Re: Ganz einfache Dateiverschlüsselung
 
Schmeiß diese Units aus der Uses Klausel raus, sie sind nicht bestandteil des Parts I.

Gruß Hagen

S2B 4. Jun 2004 21:42

Re: Ganz einfache Dateiverschlüsselung
 
Jetzt kommen aber andere Fehler:
Code:
[Fehler] OTPass.pas(18): Undefinierter Bezeichner: 'TBase'
[Fehler] OTPass.pas(21): Undefinierter Bezeichner: 'TRandom_BBS'
[Fehler] OTPass.pas(99): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(111): Undefinierter Bezeichner: 'TNumSettings'
[Fehler] OTPass.pas(114): Undefinierter Bezeichner: 'NumSettings'
[Fehler] OTPass.pas(119): Undefinierter Bezeichner: 'StrBase'
[Fehler] OTPass.pas(120): Undefinierter Bezeichner: 'StrBlocks'
[Fehler] OTPass.pas(121): Undefinierter Bezeichner: 'StrSeparator'
[Fehler] OTPass.pas(123): Undefinierter Bezeichner: 'StrPadding'
[Fehler] OTPass.pas(125): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(129): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(134): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(134): Inkompatible Typen
[Fehler] OTPass.pas(135): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(135): Nicht genügend wirkliche Parameter
[Fehler] OTPass.pas(140): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(141): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(141): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(165): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(165): Zu viele Parameter
[Fehler] OTPass.pas(166): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(166): Anweisung erforderlich, aber Ausdruck vom Typ 'Integer' gefunden
[Fehler] OTPass.pas(167): Operator oder Semikolon fehlt
[Fehler] OTPass.pas(176): Operator oder Semikolon fehlt
[Fataler Fehler] DEC.dpk(45): Verwendete Unit '..\Lib\DEC\OTPass.pas' kann nicht compiliert werden
Oder muss ich diese Unit vielleicht gar nicht installieren!?

negaH 5. Jun 2004 11:22

Re: Ganz einfache Dateiverschlüsselung
 
Korrekt, OTPass.pas kannste ebenfalls rausschmeisen. Wo hast du denn diese krumme DEC Version her ? Normalerweise sind diese Units per DEFINES deaktiviert. Es gibt DEFINES für die unterschiedlichen DEC Distibutionen, nur der Part I ist publiziert. Aber alle diese Units sind oder waren Bestandteil des damaligen Part II vom DEC.
Die einzigste Unit die du instalieren musst, ist DECReg.pas. Normalerweise musste sogar garnichts installieren, denn das Konzept der DEC Klassenhierarchie benötigt keine wichtigen Komponenten. D.h. einfach einen Suchpfad zum DEC anlegen, Units in die Uses Klausel deines Projektes einbinden, die TCipher_XXX/THash_XXX oder TStringFormat_XXX Klassen direkt benutzen und compilieren, fertig.

Gruß Hagen

S2B 5. Jun 2004 11:25

Re: Ganz einfache Dateiverschlüsselung
 
Zitat:

Zitat von negaH
Normalerweise musste sogar garnichts installieren, denn das Konzept der DEC Klassenhierarchie benötigt keine wichtigen Komponenten. D.h. einfach einen Suchpfad zum DEC anlegen, Units in die Uses Klausel deines Projektes einbinden, die TCipher_XXX/THash_XXX oder TStringFormat_XXX Klassen direkt benutzen und compilieren, fertig.

Genau das geht bei mir nicht! :wink:
Naja, ich probiers heut im Lauf des Tages nochmal...

negaH 5. Jun 2004 11:59

Re: Ganz einfache Dateiverschlüsselung
 
Hm, das kann doch garnicht sein. Ich habe von Zeit zu zeit immer mal wieder EMails von Leuten denen es genauso geht wie dir. Aber das sind nur 10 bis 12 Leute von 1000'enden.

Du entpackst das DEC aus dem ZIP mit Ordnern. Danach sollte ein Verzeichnisbaum enstehen wie ..\DEC\Source\ usw. In deinem Projekt wird nun im Suchpfad exakt der Pfad ..\DEC\SOURCE\ hinzugefügt. Nun brauchst du in der Uses Klausel deiner Unit nur noch die Units DECUtil, Hash, Cipher einbinden. Danach sollte es SOFORT laufen. Dein beschriebenes Unit Problem kann nur entstehen wenn du die Unit DECReg.pas benutzt. Diese wird aber AUSSCHLIESSLICH nur in DesignTime Packages eingebunden, und auch dann nur wenn man die beiden Komponenten TCipherManager und THashManager benötigt um Zb. das DEMO Projekt neu zu compilieren.

Gruß Hagen

S2B 5. Jun 2004 12:42

Re: Ganz einfache Dateiverschlüsselung
 
Also, ich hab das jetzt mal genau so versucht, wie du es gesagt hast, es geht aber immer noch nicht! :cry:
Delphi-Quellcode:
uses [...] , DECUtil, Hash, Cipher;

procedure TForm1.Button1Click(Sender: TObject);
begin
  //Verschlüsseln:
  with TCipher_Rijndael.Create('Passwort', nil) do
  try
    EncodeFile(app + 'Bild1.jpg', app + 'Bild2.jpg');
  finally
    Free;
  end;
end;
Und das sind die Fehler:
Code:
[Fehler] Unit1.pas(1137): Undefinierter Bezeichner: 'TCipher_Rijndael'
[Fehler] Unit1.pas(1137): 'DO' erwartet, aber Bezeichner 'Create' gefunden
[Fehler] Unit1.pas(1139): Undefinierter Bezeichner: 'EncodeFile'
[Fataler Fehler] Browser.dpr(20): Verwendete Unit 'alt\Unit1.pas' kann nicht compiliert werden

negaH 5. Jun 2004 13:18

Re: Ganz einfache Dateiverschlüsselung
 
Könnte es sein das du ein anderes Fremdprodukt benutzt das ebenfalls eine Unit "Cipher" enthält ??
Anders kann ich's mir nicht erklären.

Gruß hagen

Meflin 5. Jun 2004 13:25

Re: Ganz einfache Dateiverschlüsselung
 
bei mir gehts auch nicht. und ich hab bestimmt keine andere unit cipher...

negaH 5. Jun 2004 13:40

Re: Ganz einfache Dateiverschlüsselung
 
Oh mann ihr macht mich fertig, heute ;)
Geht mal auf DSP = Delphi Super Page und downlaoded von dort das DEC.
Dann installiert ihr das ZIP mit Verzeichnissen.
Nun fügt ihr in den Projektoptionen den Pfad zu den Sourcen hinzu.
Dann obigen Source ins projekt kopiert.
Das MUSS laufen, es sind doch nur 5 Zeilen Source.

Gruß Hagen

S2B 5. Jun 2004 17:05

Re: Ganz einfache Dateiverschlüsselung
 
Zitat:

Zitat von negaH
Geht mal auf DSP = Delphi Super Page

Du glaubst gar nicht, wie viele Delphi Super Pages es gibt! :roll: Wenn du diese Site meinst, dann sag mir bitte, wo ich da die Komponente finden soll! Könntest du bitte mal einen Link posten? :wink:

MrKnogge 5. Jun 2004 17:13

Re: Ganz einfache Dateiverschlüsselung
 
Nun ja, du gehst auf die Seite, klickst auf Delphi5 und suchst in der Kategorie "Compression, Encryption" und hälst ausschau nach eine Komponennte von "Hagen Reddmann". Letztendlich müsstest du auf diesen link stoßen.

S2B 5. Jun 2004 17:24

Re: Ganz einfache Dateiverschlüsselung
 
thx! Werde die Komponente mal so, wie Hagen es gesagt hat, installieren! :wink:

Edit: Dieses schlug fehl! Ich hab jetzt eine einfache XOR-Verschlüsselung verwendet, da diese für diesen Zweck voll und ganz ausreicht! 8)

Sharky 6. Jun 2004 08:00

Re: Ganz einfache Dateiverschlüsselung
 
Zitat:

Zitat von negaH
....Das MUSS laufen, es sind doch nur 5 Zeilen Source....

Ich muss gestehen........ Bei mir kommen die selben Fehlermeldungen :roll:

[Edit]Ich habe den "Fehler" glaube ich gefunden. TCipher_Rijndael ist nicht in der Unit Cipher sondern in Cipher1.

S2B 6. Jun 2004 09:28

Re: Ganz einfache Dateiverschlüsselung
 
Zitat:

Zitat von Sharky
Ich habe den "Fehler" glaube ich gefunden. TCipher_Rijndael ist nicht in der Unit Cipher sondern in Cipher1.

Dann kann ichs ja nochmal versuchen! :-D

Die Muhkuh 6. Jun 2004 11:09

Re: Ganz einfache Dateiverschlüsselung
 
Ist auch klar, denn in der Unit Cipher ist Rijndael nicht implementiert. Aber in Cipher1 schon. Und was mir grad aufgefallen ist:
In Cipher sind andere Verschlüsselungen als in Cipher1.

Meflin 6. Jun 2004 13:05

Re: Ganz einfache Dateiverschlüsselung
 
lol. hat da wohl einer den überblick verloren ;-)

negaH 6. Jun 2004 14:23

Re: Ganz einfache Dateiverschlüsselung
 
Ach shit, natürlich Cipher1.pas ist richtig. Später, als aus Rijndael der offizelle AES Gewinner wurde, also sozusagen zum heutigen Standard, habe ich dies geändert. Leider ist aber meine inoffizielle Version vom DEC somit nicht mehr gleich mit der offizellen Version 3.0 aus dem Netz.

Ich hoffe mir wird verziehen ;)

Gruß Hagen

MrKnogge 6. Jun 2004 14:26

Re: Ganz einfache Dateiverschlüsselung
 
bei so einer hervoragenden freeware-komponennte, wird uns nichts anderes übrig bleiben als dir zu verzeihen :mrgreen:

Luckie 6. Jun 2004 14:28

Re: Ganz einfache Dateiverschlüsselung
 
Zitat:

Zitat von negaH
Ich hoffe mir wird verziehen ;)

Als Buse wird dir auferlegt eine Dokumentation im CHM-Format zu schreiben und eine mindestens einseitige Homepage zu machen. ;)

Wenn du mir die Texte lieferst - müseen nicht viel und lang sein, nur um was es sich handelt und was bei der installation zu beachten ist, könnte ich mich hinreißen lassen dies für dich zu übernehmen und die Seite für dich zumachen und auf meinem Webspace zu legen: http://dec.luckie-online.de

Meflin 6. Jun 2004 14:44

Re: Ganz einfache Dateiverschlüsselung
 
hey luckie das ist passwortgeschützt!

p.s.: sogar ich würd das machen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 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