/// <summary> /// metoda sluzaca do zalogowania uzytkownika /// </summary> /// <param name="obj">obiekt sluzacy do uruchomienia metody</param> private void Login(object obj) { client = new TcpClient("127.0.0.1", 5000); var reader = new BinaryReader(client.GetStream()); var serverPKString = reader.ReadString(); serverPK.FromXmlString(serverPKString); user.Username = loginTextBox.Text; user.Password = passwordTextBox.Text; bool registered=false; RSACryptoServiceProvider pk = new RSACryptoServiceProvider(); user.RSAKeys = pk.ExportParameters(true); if (registerRadioButton.Checked) { registered = false; } else if (loginRadioButton.Checked) { registered = true; } var message = new RegisterMessage(user.Username, user.Password, pk.ExportParameters(false),registered); var messageEncrypted = Security.EncryptMessage(message, serverPK.ExportParameters(false)); var writer = new BinaryWriter(client.GetStream()); writer.Write(messageEncrypted); var t = reader.ReadString(); var loginReply = (Messages.Message)MessageSerializer.Deserialize(t, typeof(Messages.Message)); MessageBox.Show(loginReply.data); if (loginReply.data.Equals("Chosen username was free. Account added.") || loginReply.data.Equals("Login succeeded.")) { loginButton.EnableButton(false); loggedIn = true; } while (loggedIn) { try { var buffer = reader.ReadString(); if (messageReceived != null) { messageReceived(this, new MessageReceivedEventArgs(buffer)); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
/// <summary> /// metoda do szyfrowania wiadomosci rejestracyjnej algorytmen RSa /// </summary> /// <param name="message">wiadomosc do odszyfrowania</param> /// <param name="keyInfo">klucze RSA</param> /// <returns>zserializowana i odszyfrowana wiadomosc</returns> public static string DecryptMessage(RegisterMessage message, RSAParameters keyInfo) { var converter = new UnicodeEncoding(); var username = Convert.FromBase64String(message.Username); var password = Convert.FromBase64String(message.Password); string decryptedUsername = converter.GetString(RSADecrypt(username, keyInfo, false)); string decryptedPassword = converter.GetString(RSADecrypt(password, keyInfo, false)); var decryptedMessage = new RegisterMessage(decryptedUsername, decryptedPassword, message.PublicKey, message.IsRegistred); return MessageSerializer.Serialize(decryptedMessage, decryptedMessage.GetType()); }