public void RasEncryptTest() { RSAEncrypt Rsa = new RSAEncrypt(); Rsa.GenerateKeys("d://pems"); string s = "王进锋"; string s1 = "jfwang123"; var spwd = Rsa.Encrypt(s, "d://pems/RSA.Pub"); var s1pwd = Rsa.Encrypt(s1, "d://pems/RSA.Pub"); Assert.Equal(Rsa.Decrypt(spwd, "d://pems/RSA.Private"), s); Assert.Equal(Rsa.Decrypt(s1pwd, "d://pems/RSA.Private"), s1); }
public static void HandleClients(TcpClient client) { string publicKey; string privateKey; int KeySize = 2048; RSAEncrypt.GenerateKeys(KeySize, out publicKey, out privateKey); while (true) { if (client.Available > 0) { // Setup reader/writer stream NetworkStream stream = client.GetStream(); StreamReader Reader = new StreamReader(stream); StreamWriter Writer = new StreamWriter(stream) { AutoFlush = true }; string data = Reader.ReadLine(); ChatUser chatUser = JsonConvert.DeserializeObject <ChatUser>(data); if (chatUser.CommandInter == (int)ChatUser.Command.getRSAKey) { chatUser.RsaKey = publicKey; list_clients.TryAdd(chatUser.ChatUserId, client); chatUsers.Add(chatUser); stream = list_clients[chatUser.ChatUserId].GetStream(); string Input = JsonConvert.SerializeObject(chatUser); Writer.WriteLine(Input); } else if (chatUser.CommandInter == (int)ChatUser.Command.AddChatUser) { chatUser.DesKey = RSAEncrypt.Decrypt(chatUser.DesKey, KeySize, publicKey); client = list_clients[chatUser.ChatUserId]; Console.WriteLine(chatUser.User.UserName + " entrou na sala " + chatUser.Chat.Name + "!"); chatUser.Message = Encrypt(chatUser.User.UserName + " entrou na sala " + chatUser.Chat.Name + "!", chatUser.DesKey); Broadcast(chatUser); } else if (chatUser.CommandInter == (int)ChatUser.Command.DeleteChatUser) { client.Client.Shutdown(SocketShutdown.Both); client.Close(); TcpClient tcpRemove; list_clients.TryRemove(chatUser.ChatUserId, out tcpRemove); ChatUser userToRemove = chatUsers.Find(c => c.ChatUserId == chatUser.ChatUserId); chatUsers.Remove(userToRemove); Console.WriteLine(chatUser.User.UserName + " saiu da sala " + chatUser.Chat.Name + "!"); chatUser.Message = Encrypt(chatUser.User.UserName + " saiu da sala " + chatUser.Chat.Name + "!", chatUser.DesKey); Broadcast(chatUser); break; } else if (chatUser.CommandInter == (int)ChatUser.Command.SendMessage) { // Decrypt the bytes to a string. string messageDecrypted = Decrypt(chatUser.Message, chatUser.DesKey); Console.WriteLine("Sala: " + chatUser.Chat.Name + "-" + chatUser.User.UserName + ": " + messageDecrypted); Broadcast(chatUser); } } } }