Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Dateiverschlüsselung mit AES - Problem

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Type



Anmeldungsdatum: 24.02.2006
Beiträge: 187
Wohnort: Dresden

BeitragVerfasst am: 05.01.2011, 16:56    Titel: Dateiverschlüsselung mit AES - Problem Antworten mit Zitat

Hallo Leute,

ich habe mir den Code zur AES-Verschlüsselung vom FreeBasic-Portal besorgt, und wollte mit dessen Hilfe Dateien kopieren und mit AES verschlüsseln.

Hier ist mein Test-Code:
Code:
#include once "AES.bi"

dim as integer teil = 8192
dim as string dat1 = "testdatei.bas"
dim as string dat2 = "testdatei.enc"
dim as string key = "abcdefghijklmnop"
dim as string puffer

'Verschlüsseln
open dat1 for binary as #1
   open dat2 for binary as #2
      do until loc(1) = lof(1)
         if lof(1) - loc(1) < teil then
            puffer = space(lof(1)-loc(1))
         else
            puffer = space(teil)
         end if
         get #1, , puffer
         put #2, , aes_encrypt(puffer, key)
      loop
   close #2
close #1

'Entschlüsseln
open dat2 for binary as #1
   open dat1 for binary as #2
      do until loc(1) = lof(1)
         if lof(1) - loc(1) < teil then
            puffer = space(lof(1)-loc(1))
         else
            puffer = space(teil)
         end if
         get #1, , puffer
         put #2, , aes_decrypt(puffer, key)
      loop
   close #2
close #1


Das Problem ist nun, dass die entschlüsselte Datei _nicht_ dieselbe, wie die Original-Datei ist. (Am Ende der Datei stehen immer irgendwelche kryptischen Zeichen) - Wie kommt das? - Muss ich bei der Verschlüsselung von Dateien anders vorgehen?
- Übrigens ist es egal, ob ich im binären oder sequentiellen Modus arbeite.
Interessanterweise sind exe-Dateien nach den hin- und herkonvertierung immernoch lauffähig.

Könnt ihr mir da weiterhelfen?

MfG Type
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 05.01.2011, 17:15    Titel: Antworten mit Zitat

AES verschlüsselt blockweise, daher wird das Ergebnis von der Länge her immer ein Vielfaches der Blockgröße sein. Ist die Eingabedatei "zu kurz", dann muss sie irgendwie aufgefüllt werden, und beim Entschlüsseln hängen hinten kryptische Zeichen. Für eine exe-Datei sollte das kein Problem sein, weil diese Zeichen dann nicht beachtet werden.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Type



Anmeldungsdatum: 24.02.2006
Beiträge: 187
Wohnort: Dresden

BeitragVerfasst am: 05.01.2011, 19:11    Titel: Antworten mit Zitat

Achso, gut zu wissen.
Halt mich jetzt für dämlich, aber wie groß muss die Datei denn mindestens sein? - Das sind doch 16Byte oder nicht? - gilt das nur für die Blockgröße oder generell für die große der Dateien?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 05.01.2011, 19:20    Titel: Antworten mit Zitat

Ich kenne Blockgrößen von 128 Bit, 192 Bit und 256 Bit. Wenn ich mich nicht völlig irre, kannst du auch eine 1 Byte große Datei verschlüsseln, dann werden halt 15 Byte (oder was eben fehlt) angehängt.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 06.01.2011, 13:16    Titel: Antworten mit Zitat

o_O Da benutzt ja jemand noch den vollkommen unoptimieren Reijndael von Zamaster den ich mal bei FBP gepostet habe.

Der verwendet in der Tat eine Blockgröße von 128 Bit (16 Byte). Wenn ich mich recht entsinne wird bei einem nicht vollen Puffer einfach über das Ende hinausgelesen, daher die kryptischen Zeichen. Hätte ich den Wrapper etwas sauberer geschrieben würden einfach Nullen angehängt werden. Hab ich aber nicht! geschockt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Type



Anmeldungsdatum: 24.02.2006
Beiträge: 187
Wohnort: Dresden

BeitragVerfasst am: 06.01.2011, 15:11    Titel: Antworten mit Zitat

28398 hat Folgendes geschrieben:
Da benutzt ja jemand noch den vollkommen unoptimieren Reijndael von Zamaster den ich mal bei FBP gepostet habe.

Tja, wer suchet, der findet zwinkern

Gibt es vielleicht noch einen besseren/sichereren Code, zum Verschlüsseln von Texten?
Bzw. wo muss ich den Wrapper abändern?

Externe Bibliotoheken, wie cryptlib wollte ich eigentlich vermeiden.

Interessante Sache, dass ich erst bei einer Dateigröße von 128 _Byte_ keine kryptischen Zeichen mehr erhalte...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz