Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Type
Anmeldungsdatum: 24.02.2006 Beiträge: 187 Wohnort: Dresden
|
Verfasst am: 05.01.2011, 16:56 Titel: Dateiverschlüsselung mit AES - Problem |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 05.01.2011, 17:15 Titel: |
|
|
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 |
|
 |
Type
Anmeldungsdatum: 24.02.2006 Beiträge: 187 Wohnort: Dresden
|
Verfasst am: 05.01.2011, 19:11 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 05.01.2011, 19:20 Titel: |
|
|
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 |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 06.01.2011, 13:16 Titel: |
|
|
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!  |
|
Nach oben |
|
 |
Type
Anmeldungsdatum: 24.02.2006 Beiträge: 187 Wohnort: Dresden
|
Verfasst am: 06.01.2011, 15:11 Titel: |
|
|
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
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 |
|
 |
|