nach CryptoStream.Close() immer ca. 8 Bytes zuviel

Christian Kusmanow

Erfahrenes Mitglied
Verschlüsselungs Problem - immer ca. 8 Bytes zuviel (CryptoStream)

Hallo FIAE's!

Ein nervenzerreibendes Problem diesmal.
Ich lese eine Datei ein und verschlüssel sie mit Hilfe des CryptoStreams.
Dazu brauch ich natürlich noch 2 FileStreams. Einer der ließt und ein anderer in den der CryptoStream hinein Schreibt.
Code:
m_fin;
m_fout;
m_encStream = new CryptoStream( m_fout, DES.CreateEncryptor( pontius, pilatus ), CryptoStreamMode.Write );

Nachdem alle Bytes verschlüsselt wurden und ich am Ende der Datei angekommen bin, hat die Datei noch die richtige Anzahl an Bytes.
Sobald aber der CryptoStream geschlossen wird,
Code:
CryptoStram.Close()
werden ca. 8 Bytes zusätzlich drangehängt.
Bin mir ganz sicher das sich im Buffer des CryptoStream's keine Bytes mehr befinden.
Vor dem schliessen wird
Code:
CryptoStram.Flush()
ausgeführt.

Woran kann das liegen? Danke schon mal im Vorraus für eure Mühe. Ich find den Fehler einfach nicht.

MfG cosmo

P.S:
Ein Frohes Weihnachtsfest und falls man sich dieses Jahr hier nicht mehr trifft, wünsch ich allen noch einen Guten Rutsch.
 
Zuletzt bearbeitet:
Ich hoffe ihr hattet schöne Weihnachtsgfeiertage gehabt!

Der Weihnachtsmann war zwar fleißig, er konnte mir aber leider keine Antwort auf mein Problem geben. :p

Währ klasse wenn sich jemand melden könnte bevor den Mist noch mit der TransformBlock-Methode selber nachbauen muss.
Wenn ihr code zum ergründen des Problems braucht, sagt bescheit. Ich denke aber mal das ich es nicht großartig anders mache wie es in der MSDN steht.

Züsatzlich solltet ihr wissen das ich mit dem gleichen Verfahren, das ver- und entschlüsseln einer XML-Datei ohne Probleme funktioniert. Das große Disaster liegt aber bei'm veschlüsseln eines WMV's.
Das mit ca. 8 Bit zuviel bestückte WMV (siehe oben) läst sich zwar in einem Mediaplayer abspielen, ist aber nicht mehr Streambar ( hab das unverschlüsselte Getestet ).

HILFE!

MfG cosmo
 
Zuletzt bearbeitet:
So langsam komm ich auf den Fehler. Mir scheint das es einen Unterschied dabei gibt wenn ich die Datei beim Entschlüsseln nicht wieder in eine Datei schreibe:
Code:
m_encStream.Write( rdBuffer, 0, len );
sondern gleich in den Speicher packe.
Code:
m_encStream.Read( rdBuffer, 0, m_iCryptBufferLength );
Wenn man in die Datei schreibt bleiben die Bytes die zuviel sind aus. Das Ergenis hat wieder die richtige Anzahl an Bytes.
Wenn ich nur vom m_encStream lese bekomm ich rigoros alle Bytes.

:mad: Das kotzt mich an.:mad:

Also, macht nicht den gleichen Fehler. ;)

MfG cosmo
 
Zuletzt bearbeitet:
Ich hätte da nochwas zu ergänzen.
Da ich jetzt die Datei jetzt wieder in einen FileStream schreiben muss, damit sie ordentlich entschlüsselt wird, ich aber nicht will das sie gelesen oder kopiert wird, weil sie gleich danach ins iNet hochgeladen werden soll, habe ich sie während ich sie wieder einlese mit,
Code:
m_fin.Lock( 0, m_fin.Length )
für den User gesperrt und gleich danach wieder glöscht. Somit ist die Sache trotzdem sicher ;)
Und ich kann endlich in den Silvester starten.

MfG cosmo

ICH WÜNSCH EUCH ALLEN EINEN GUTEN RUTSCH !
 

Neue Beiträge

Zurück