Paweł Korba Webdeveloper php
Temat: Serializacja/deserializacja obiektu z szyfrowaniem
Witam,Serializuję i deserializuję obiekt pomiędzy klientem a serwerem. Chciałbym, żeby taka komunikacja była zaszyfrowana. Przekopując google w poszukiwaniu metody, znalazłem jedynie propozycję zastosowania CryptoStream i symetrycznego algorytmu szyfrującego.
Wygląda to tak:
//Client
Stream netStream = new NetworkStream(clientSocket);
IFormatter formatter = new BinaryFormatter();
ModulesManager modulesManager = new ModulesManager(ModulesIDs);
SymmetricAlgorithm cryptoRijn = SymmetricAlgorithm.Create();
byte[] key = new byte[] { 59, 143, 214, 60, 47, 87, 179, 23, 132, 191, 193, 0, 114, 141, 184, 101, 199, 1, 74, 227, 90, 186, 98, 233, 197, 75, 12, 35, 74, 32, 15, 221 };
byte[] iv = new byte[] { 170, 138, 2, 4, 63, 237, 140, 87, 212, 195, 20, 40, 19, 180, 204, 252 };
CryptoStream cryptoStream = new CryptoStream(netStream, cryptoRijn.CreateEncryptor(key, iv), CryptoStreamMode.Write);
formatter.Serialize(cryptoStream, modulesManager);
cryptoStream.FlushFinalBlock();
cryptoStream.Flush();
cryptoStream.Close();
//Server
byte[] key = new byte[] { 59, 143, 214, 60, 47, 87, 179, 23, 132, 191, 193, 0, 114, 141, 184, 101, 199, 1, 74, 227, 90, 186, 98, 233, 197, 75, 12, 35, 74, 32, 15, 221 };
byte[] iv = new byte[] { 170, 138, 2, 4, 63, 237, 140, 87, 212, 195, 20, 40, 19, 180, 204, 252 };
IFormatter formatter = new BinaryFormatter();
SymmetricAlgorithm cryptoRijn = SymmetricAlgorithm.Create();
CryptoStream cryptoStream = new CryptoStream(networkStream, cryptoRijn.CreateDecryptor(key,iv), CryptoStreamMode.Read);
ModulesManager modulesManager = (ModulesManager)formatter.Deserialize(cryptoStream);
Niestety podczas deserializacji program zastyga w bezruchu, aż zamknie mu się połączenie socketowe i wywali błąd.
Znalazłem info, jakoby (nie zagłębiając się w szczegóły) CryptoStream nie chce zbytnio gadać z NetworkStream.
Czy ma ktoś pomysł, jakby to ugryźć z innej strony? Może jest sposób, żeby zaszyfrować całą komunikację klient-serwer?
Będę wdzięczny za pomoc.
Pozdrawiam,
Paweł