C#: Was sollte man in einer Datei verschlüsseln?
Moin,
ich möchte eine Datei in CSharp mit dem AES256 verschlüsseln. Was genau sollte man denn überhaupt verschlüsseln, um es anschließend auch wieder entschlüsseln zu können? Nehmen wir mal zwei unterschiedliche Beispiele:
- .txt
- .zip
Den Inhalt der Textdatei kann man einfach auslesen und ver- bzw. entschlüsseln, wie sieht es denn mit einer PDF- oder ZIP-Datei aus? Einfach so kann man den Inhalt nicht auslesen... Wie wäre es mit den Bytes?
Im Internet habe ich nicht viel dazu finden können. Ich will eigentlich auch keine Lösung, sondern nur einen Lösungsansatz. Mir wäre damit schon geholfen, wenn ich erst einmal weiß, was ich denn genau verschlüsseln muss.
Nach Kerckhoff's Prinzip, hier mein Algorythmus.
Vielen Dank im Voraus!
3 Antworten
Den Inhalt der Textdatei kann man einfach auslesen und ver- bzw. entschlüsseln, wie sieht es denn mit einer PDF- oder ZIP-Datei aus?
Eine Datei ist erstmal ein Haufen Bytes, und so solltest du sie betrachten - nicht als String, denn damit unterstellst du schon eine bestimmte Kodierung (z.B. UTF-8), was für die Verschlüsselung an sich irrelevant ist.
Natürlich gibt es Formate die intern Verschlüsselung erlauben, wie eben ZIP. Da ist die Hülle nach wie vor eine ZIP-Datei (erkennbar an den magischen Bytes "PK"), aber Teile davon sind verschlüsselt. Auch PDF kann das.
Aber ein generalisiertes Programm zum Ver- und Entschlüsseln beliebiger Dateien kümmert sich nicht darum, das betrachtet jede Datei als Sequenz von Bytes.
Eine Datei ist erstmal ein Haufen Bytes, und so solltest du sie betrachten - nicht als String, denn damit unterstellst du schon eine bestimmte Kodierung (z.B. UTF-8), was für die Verschlüsselung an sich irrelevant ist.
Genau darauf wollte ich hinaus.
jede Datei als Sequenz von Bytes
Gut, also ist mein Ziel eben alle Bytes der Dateien auszulesen und eben diese zu verschlüsseln..?
Da habe ich folgendes gefunden: https://www.fluxbytes.com/csharp/encrypt-and-decrypt-files-in-c/
Vielleicht arbeite ich damit. Vielen Dank für Deine Antwort!
MfG
Wenn du eine Binäre Datei verschlüsseln willst mit deinem Algogithmus dann musst du sie zuerst nochmal Base64 codieren, sonnst fliegt dir als erstes Rijndael um die Ohren.
Die einfachste Möglichkeit wäre wohl die Datei die du verschlüsseln willst einfach in eine ZIP zu packen und diese mit einem PW zu versehen.
Das ganze geht mit c# recht gut
Ich denke das es realtiv schwer sein wird von einer PDF Datei einzeln Text und Bilder auszulesen und sie danach wieder richtig anzuordenen.
Ich würde es mal mit der Syncfusion PDF Library versuchen. Da kannst du gleich die ganze Datei mit AES256 (oder anderen) verschlüsseln und entschlüsseln.
https://www.syncfusion.com/blogs/post/simple-steps-to-encrypt-and-decrypt-pdf-files-using-c.aspx
Hoffe ich konnte damit helfen
Nein, das meine ich nicht. Klar, das geht, aber ich möchte dennoch dieselbe Datei am Ende erhalten - nur mit dem o.g. Algorythmus verschlüsselt.
Stell Dir einfach vor, Du hashst einen Text. Ist am Ende ja auch keine ZIP-Datei. :)