Ich habe Code geschrieben, der Daten verschlüsselt und dann komprimiert, aber ich habe es schwer Code zu schreiben, der alles umgekehrt macht.Was ist das Gegenteil von diesem Verschlüsselungs- + Komprimierungscode in C#?
Ich bekomme verschiedene Fehler, egal wie ich den Code zusammensetze.
Meine Frage ist sehr einfach:
In welcher Reihenfolge die verschiedenen Teile des Codes verwendet werden soll?
Hier ist mein Beispielcode zum Verschlüsseln und Komprimieren:
MemoryStream mS = new MemoryStream();
CryptoStream cryptS = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write));
DeflateStream defS = new DeflateStream(cryptS, CompressionMode.Compress)
BinaryWriter bW = new BinaryWriter(defS))
//bw.Write("write a string for example");
bW.Close();
nun in der Entschlüsselungsroutine sollte, die CryptoStream
nach den DeflateStream
verwendet wird richtig rückwärts, um die Verschlüsselungsroutine zu verfolgen? Oder sollte die DeflateStream
nach der CryptoStream
verwendet werden?
Wie das folgende Beispiel:
MemoryStream mS = new MemoryStream();
DeflateStream defS = new DeflateStream(ms, CompressionMode.Compress)
CryptoStream cryptS = new CryptoStream(defS, des.CreateEncryptor(), CryptoStreamMode.Write));
BinaryWriter bW = new BinaryWriter(cryptS))
//bw.Write("write a string for example");
bW.Close();
Die Fehler, die ich variieren Unknown block type. Stream might be corrupted.
-Bad data
bin immer.
EDIT:
Hier meine Verschlüsselungs- und Entschlüsselungsroutinen sind. Ich bekomme den Fehler Unknown block type. Stream might be corrupted
.
Encryption Routine:
using (MemoryStream mS = new MemoryStream())
{
using (CryptoStream cryptS = new CryptoStream(mS, dES.CreateEncryptor(), CryptoStreamMode.Write))
{
using (DeflateStream defS = new DeflateStream(cryptS, CompressionMode.Compress))
{
using (BinaryWriter bW = new BinaryWriter(defS))
{
DateTime dT = new DateTime().Now;
bW.Write(dt.Ticks);
}
}
}
}
Entschlüsselungs-Routine (davon ausgehen, dass mS mit den verschlüsselten Daten gefüllt ist):
using (MemoryStream mS = new MemoryStream())
{
using (DeflateStream defS = new DeflateStream(mS, CompressionMode.Decompress))
{
using (CryptoStream cryptS = new CryptoStream(defS, dES.CreateDecryptor(), CryptoStreamMode.Read))
{
using (BinaryReader bR = new BinaryReader(cryptS))
{
DateTime dT = new DateTime((long)bR.ReadInt64());
}
}
}
}
Ich erhalte den Fehler Failed to construct a huffman tree using the length array. The stream might be corrupted.
Was könnte der Fehler sein?
Vielen Dank. Bitte sehen Sie meine aktualisierte Frage. Ich habe ein Stück meines Codes hinzugefügt. – vaid
@vaid vergleiche deinen Code mit meinem. Sie sind anders. Sie haben Ihre Streams beim Schreiben zum Lesen unterschiedlich verkettet. –
hmmmm ... Könntest du bitte ein wenig ausarbeiten? – vaid