Laden...

Binärdatei einlesen - Blowfish Verschlüsselung

Letzter Beitrag vor 16 Jahren 4 Posts 7.000 Views
Binärdatei einlesen - Blowfish Verschlüsselung

Hallo Zusammen,

ich möchte ein Verschlüsselungstool schreiben, das mir jegliche arten von Dateien mit dem Blowfish-Algorithmus verschlüsselt. Ich verwende dazu die Chilkat.dll. Mit Textdatein klappt das auch sehr gut, alles kein Problem. Aber wenn ich eine PDF oder Word Datei nach dem Verschlüsseln wieder entschlüssel und dannach öffnen will, is die PDF leer und Word packt mir nur leere Kästchen auf den Bildschirm bzw. fragt nach der Kodierung.

Aufgrund dessen habe ich den Code so umgebaut, das ein Filestream geöffnet wird und ein BinaryReader daraus ließt.

Aber irgendwo is da der Haken, weil die verschlüsselte Datei dann deutlich kleiner ist, als die originale Datei und nach dem Entschlüsseln "System.IO.BinaryReader" in der Word-Datei steht.

hier mal der Code:


private void versch()
{
Chilkat.Crypt crypt = new Chilkat.Crypt();
crypt.UnlockComponent(tb_passphrase.Text);

//Datei öffnen
FileStream fs = new FileStream(tb_open.Text, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
br.Read();
fs.Close();

String fileContents = Convert.ToString(br);
//String fileContents = File.ReadAllText(tb_open.Text,Encoding.UTF8); //Für die Textdateien

//Zur Konvertierung in Byte übergeben
byte[] byteData = StrToByteArray(fileContents);

// Algorithmus und Keylängefeststellen
crypt.SetAlgorithmBlowfish(); crypt.KeyLength = 256; // 256-bit encryption.

// Passphrase lesen
crypt.SetSecretKeyViaPassPhrase(tb_passphrase.Text);

// Verschlüsseln
byte[] encryptedData = crypt.Encrypt(byteData);

// Verschlüsselte datei schreiben
System.IO.BinaryWriter bw = new System.IO.BinaryWriter( System.IO.File.Create(tb_save.Text));

bw.Write(encryptedData);
bw.Close();

//<--Messagebox-->//
MessageBox.Show("Vorgangen beendet!";);
//<--Messagebox ende-->//
}

mfg m3ndl0r

mfg

m3ndl0r

mach aus

//Datei öffnen
FileStream fs = new FileStream(tb_open.Text, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
br.Read();//das birngt nix
fs.Close();

String fileContents = Convert.ToString(br);
//String fileContents = File.ReadAllText(tb_open.Text,Encoding.UTF8); //Für die Textdateien

//Zur Konvertierung in Byte übergeben
byte[] byteData = StrToByteArray(fileContents);

dashier:


FileStream fs = new FileStream(tb_open.Text, FileMode.Open, FileAccess.Read);//Datei öffnen
byte[] byteData = new byte[fs.lenght];//Speicher reservieren
fs.Read(byteData,0,fs.lenght);//In reservierten speicher kopieren
fs.Close();//datei liegt jetzt im ram/Auslagerung

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

Hallo,

vielen Dank für deine Antwort, werde ich gegen später Ausprobieren, wenn Zeit dafür ist

mfg

m3ndl0r

Hallo,

vielen Dank floste, es funktioniert. Musste aber den Code wie folgt abändern:


//Datei öffnen
FileStream fs = new FileStream(tb_open.Text, FileMode.Open, FileAccess.Read);

//Zur Konvertierung in Byte übergeben
byte[] byteData = new byte[Convert.ToInt32(fs.Length)]; //Zu int konvertieren da byte[] int als Argument verlangt

fs.Read(byteData,0, Convert.ToInt32(fs.Length)); //Genau das selbe
fs.Close();

mfg

m3ndl0r