Client Stream entschlüßeln.

Fridulin

Erfahrenes Mitglied
Hallo,

ich bräuchte mit einer Client / Server Anwendung Hilfe.

Ich möchte den Stream verschlüßeln mit CryptStream, den Stream senden ist kein Problem, nur der Empfang bzw. das Entschlüßeln. Ich kann es nur Entschlüßeln, wenn ich den Stream im Sender schließe. Ansonsten müßte ich das, denke ich, über einen Buffer lösen. Nun ist die Frage wie das geht.

Code:
			NetworkStream Client_Stream = client.GetStream();
	
			RijndaelManaged Rijndael_Manager = new RijndaelManaged();
				
			CryptoStream Crypto_Stream = new CryptoStream(Client_Stream, Rijndael_Manager.CreateDecryptor(schluessel, vecktor), CryptoStreamMode.Read);
			
			StreamReader Stream_Reader = new StreamReader(Crypto_Stream);
			
			string test = Stream_Reader.ReadToEnd();
			MessageBox.Show(test);

Damit habe ich es auch schon Probiert:
Code:
Crypto_Stream.BeginRead(Read_Buffer, 0, size, new AsyncCallback(empaenger), null);
Danach über Encoding.UTF8.GetString wieder in einen String geholt. Leider auch ohne Erfolg...

Viele Grüße und vielen Dank für die Hilfe.
Fridulin


Edit:
Hallo,

ich wollte mich mal wieder mit meinem alten Projekt beschäftigen und mal Fragen ob vielleicht jemand mittlerweile eine Idee hat.

Also alles funktioniert bis zum Code
Code:
string test = Stream_Reader.ReadToEnd();
Da bleibt mein Programm hängen, bis der Stream ganz geschloßen wird. Dann ist der Empfangen String entschlüßelt. Komischerweise hängt er allerdings noch ein paar komische Zeichen dahinter.
Er bleibt auch hängen sobald ich Stream_Reader.ReadLine() mache, oder Stream_Reader.Peek() statt Stream_Reader.ReadToEnd().

Mein Sender sieht folgendermaßen aus:
Code:
byte[] byte_string = new ASCIIEncoding().GetBytes(nachricht); <<< nachricht ist der String der gesendet werden soll.
RijndaelManaged Rijndael_Manager = new RijndaelManaged();
CryptoStream Crypto_Stream = new CryptoStream(client.GetStream(), Rijndael_Manager.CreateEncryptor(schluessel, vecktor), CryptoStreamMode.Write); 
StreamWriter Stream_Reader = new StreamWriter(Crypto_Stream);
Crypto_Stream.Write(byte_string, 0, byte_string.Length);	
Crypto_Stream.Flush();
Crypto_Stream.FlushFinalBlock();
Stream_Reader.Flush();
Vielleicht ist ja darinnen auch der Fehler enthalten?

Also ich wäre wirklich über jede Hilfe oder Idee sehr Dankbar.


Viele Grüße und einen schönen Nachmittag wünsche ich.
Fridulin

Edit2:

Hallo,

so kann das nicht funktionieren, wurde mir gesagt. So wie mir das gesagt wurde, muß man entweder den Stream beenden oder eben den String verschlüßeln und dann übertragen. Nicht den ganzen Stream verschlüßeln.

So habe ich das jetzt auch endlich lösen können.

Viele Grüße
Fridulin
 
Zuletzt bearbeitet:
Zurück