Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verschlüsselung (https://www.delphipraxis.net/25762-verschluesselung.html)

DeadyEye 12. Jul 2004 10:00


Verschlüsselung
 
Also mein Problem ist folgendes:

Ich möchte einzelne Strings im Programm einigermaßen sicher verschlüsseln und diese dann in eine Datei speichern und so dass ich sie hinterher wieder einzeln (also Zeile für Zeile) aus der Datei auslesen kann und wieder im Programm entschlüssele. Ich habe schon vieles versucht doch es klappt einfach nicht, da durch "Sonderzeichen" usw. sich viele Sachen nicht richtig in einer Textdatei speichern lassen bzw. nicht wieder komplett entschlüsseln lassen. Bitte helft mir, ich habe Stunden an dem Problem drangesessen, aber es nicht in den Griff bekommen.

alcaeus 12. Jul 2004 10:03

Re: Verschlüsselung
 
Zeige mal bitte, was du bis jetzt schon hast. Ich habe vor kurzem einen FileCrypter geschrieben, und hatte damals ein ähnliches Problem. Jetzt habe ich das Schreiben und Lesen mit BlockWrite bzw. BlockRead gelöst. Inwiefern du dann noch zeilenweise auslesen kannst ist fraglich. Vielleicht hast du aber auch nur einen kleinen Fehler im Source. Wie gesagt, poste mal etwas, dann kann dir mehr geholfen werden

Greetz
alcaeus

fiasko 12. Jul 2004 10:10

Re: Verschlüsselung
 
Zitat:

Zitat von DeadyEye
...da durch "Sonderzeichen" usw. sich viele Sachen nicht richtig in einer Textdatei speichern lassen bzw. nicht wieder komplett entschlüsseln...

Codiere das ganze doch einfach z.B. mit Base64, dann sind das nur lesbare ASCII-Zeichen - geht allerdings natürlich auf die Dateigröße.

DeadyEye 12. Jul 2004 10:16

Re: Verschlüsselung
 
Ich ahbe insgesamt 5 verschiedene Programme schon geschrieben dafür, aber es geht einfach nicht wegen der Zeichen die Dabei entstehen und sich nicht richtig in Textdateien speichern lassen. Gerade da ich es zeilenweise wieder entschlüsselt haben muss, kommt es zu falschen Zeilenumbrüchen beim einlesen und zu falschen Ergebnissen. Mit Base64 habe ich es schon probiert, das würde auch gehen nur ist das ja unsicher, da ja jeder die Strings selbst entschlüsseln könnte, da ja kein Schlüssel, Passwort oder ähnliches individuell zur Verschlüsselung übergeben wird.

fiasko 12. Jul 2004 10:19

Re: Verschlüsselung
 
Du verwechselst Codieren mit Verschlüsseln :warn:

Ich meinte du verschluesselst das auf gewohnte weise und dann jagst du es nochmal durch die Codierung nach Base64!

DeadyEye 12. Jul 2004 10:22

Re: Verschlüsselung
 
Stimmt, ich weiß auch nciht was der Unterschied ist. Also soll ich es erst mit einer beliebigen Methoden verschlüsseln und damit ich es speicher kann hinterher mit Base64 nochmal? Ist das so richtig?

alcaeus 12. Jul 2004 10:23

Re: Verschlüsselung
 
Alternativ kannst du ja auch die verschlüsselten ASCII-Zeichen als Hexcodes abspeichern. Die Datei wird dadurch zwar doppelt so groß, aber das kann ja je nach Größe der Ausgangsdatei vernachlässigt werden.

Greetz
alcaeus

fiasko 12. Jul 2004 10:25

Re: Verschlüsselung
 
Genau. Mit der Codierung stellst du die Information statt mit allen 256 möglichen ASCII Zeichen "nurnoch" mit 64 verschiedenen Zeichen dar (werden logischerweise mehr Zeichen, da Base64 keine Redundanzreduktion macht).

DeadyEye 12. Jul 2004 10:25

Re: Verschlüsselung
 
Zitat:

Zitat von alcaeus
Alternativ kannst du ja auch die verschlüsselten ASCII-Zeichen als Hexcodes abspeichern. Die Datei wird dadurch zwar doppelt so groß, aber das kann ja je nach Größe der Ausgangsdatei vernachlässigt werden.

Greetz
alcaeus

Dass verstehe ich leider nicht, bzw. weiß nciht wie man es umsetzen könnte. Würde es denn nciht so perfekt gehen wie ich das in meinem letzten Post versucht habe zusammenzustellen?

DeadyEye 12. Jul 2004 10:27

Re: Verschlüsselung
 
@fiasko

Also könnte ich wirklich jede beliebige Verschlüsselung nehmen, nur muss ich dann die einzelnen verschlüsselten Strings nochmal decodieren damit sie "speicherbar" sind? Wenn ja, was wäre denn eine sichere aber auch leicht zu einbindende Verschlüsselung?

fiasko 12. Jul 2004 10:31

Re: Verschlüsselung
 
Jepp, wenn du codieren meinst :-)


Was alcaeus meint ist das jedes ASCII Zeichen 1 Byte belegt und sich folglich aus 2 Hex-Nummern darstellen läßt (eins für jedes Nibble (==Halbbyte)).

alcaeus 12. Jul 2004 10:33

Re: Verschlüsselung
 
Es läuft am Ende aufs gleiche hinaus. Nachdem ASCII-Zeichen mit 8 Bit dargestellt werden, ist die Verwendung von Hex-Codes einfach (00 bis FF). Dazu brauchst du zuerst den ASCII-Code des Zeichens, welchen du mit mit Ord erhälst, mit IntToHex kannst du den dann in in den HexCode umwandeln. Das Entschlüsseln geschieht analog mit HexToInt und Chr.

Greetz
alcaeus

DeadyEye 12. Jul 2004 10:36

Re: Verschlüsselung
 
Das andere versteh ich trotzdem nicht *g*. Aber wenn das mit dem anderen geht reicht mir das ja schon. Bin nämlich schon total verzeifelt. Habe stundenlang vorher alles mögliche ausprobiert, aber nichts ging. Vielen, vielen Dank!


Thema kann jetzt eigentlich geschlossen werde, mein Problem wurde von den netten Menschen hier innerhalb von ein paar Mins gelöst :D

Jens Schumann 12. Jul 2004 10:36

Re: Verschlüsselung
 
Hallo,
es funktioniert über Stream. Hier etwas PseudoCode für ein Memo.

Verschlüsseln:
Code:
MStream : TMemoryStream;
...
Memo.Lines.SaveToStream(MStream);
Verschlüssel jetzt die Zeichen im den MStream
MStream.SaveToFile(Dateiname);
Entschlüsseln:
Code:
MStream : TMemoryStream;
...
MStream.LoadFromFile(Dateiname)
Entschlüssel jetzt die Zeichen im den MStream
Memo.Lines.LoadFromStream;
Wegen der Zeilenumbrüche ist der Wege über einen Stream erforderlich.

DeadyEye 12. Jul 2004 10:41

Re: Verschlüsselung
 
Das hatte ich aber auch bereits versucht, doch vergeblich dann konnte ich bis zu 4 oder 5ten Zeile es wieder entschlüsseln, aber danach sind Fehler aufgetreten.


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