From 665d289d3a8fd86b8fd2cdaedd7956ecacfe6b1b Mon Sep 17 00:00:00 2001 From: SCM6WE Date: Thu, 23 Sep 2021 13:33:03 +0200 Subject: [PATCH] brgin of encryption --- PolyChat/Controller.cs | 52 ++++----------------- PolyChat/Models/FileManager.cs | 84 ++++++++++++++++++++++++++++++++++ PolyChat/PolyChat.csproj | 1 + 3 files changed, 95 insertions(+), 42 deletions(-) create mode 100644 PolyChat/Models/FileManager.cs diff --git a/PolyChat/Controller.cs b/PolyChat/Controller.cs index 5f114e6..1d0c322 100644 --- a/PolyChat/Controller.cs +++ b/PolyChat/Controller.cs @@ -11,6 +11,9 @@ using System; using System.Text.Json; using System.Text; using System.Security.Cryptography; +using Windows.Security.Cryptography.Core; +using Windows.Security.Cryptography; +using Windows.Storage.Streams; namespace PolyChat { @@ -37,6 +40,8 @@ namespace PolyChat { UIController = uiController; OwnIP = getIP(); + loadChats(); + encode("test"); Serve(); } @@ -168,6 +173,8 @@ namespace PolyChat /// /// sends chatlogs as json array to uiController wit corrosponding ip + /// + /// in ui when chat is clicked connection gets established /// /// public void loadChats() @@ -203,41 +210,6 @@ namespace PolyChat } } - /* - public void loadChat(String ip) - { - //TODO: also load chatlogs when user tries to connect - //load dir and create if non existant - if (Directory.Exists("U:\\PolyChat\\Saves")) - { - Debug.WriteLine("--Path exists.--"); - } - else - { - Directory.CreateDirectory("U:\\PolyChat\\Saves"); - Debug.WriteLine("--Path Created--."); - } - - //go through all files and send ip and json array to ui - String[] filepaths = Directory.GetFiles("U:\\PolyChat\\Saves"); - if (filepaths.Length > 0) - { - Debug.WriteLine("---Loading Saves"); - foreach (String path in filepaths) - { - Debug.WriteLine($"--{path}"); - String jsonArr = File.ReadAllText(path); - String ip = Path.GetFileName(path); - ip = ip.Substring(0, ip.Length - 4); - Debug.WriteLine($"-{ip}"); - Debug.WriteLine(jsonArr); - Connect(ip); - UIController.OnIncomingConnection(ip); - UIController.OnIncomingMessages(ip, jsonArr); - } - } - } - */ /// /// Saves incoming chat message to /// @@ -296,13 +268,9 @@ namespace PolyChat private void encode(string json) { - byte[] plaintext = Encoding.UTF8.GetBytes(json); - byte[] entropy = new byte[20]; - using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) - { - rng.GetBytes(entropy); - } - + String ecryptetText = FileManager.encrypt(json); + Debug.WriteLine(ecryptetText); + //Debug.WriteLine(FileManager.decrypt(ecryptetText)); } } } diff --git a/PolyChat/Models/FileManager.cs b/PolyChat/Models/FileManager.cs new file mode 100644 index 0000000..815873c --- /dev/null +++ b/PolyChat/Models/FileManager.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; +using System.Security.Cryptography; + + +namespace PolyChat.Models +{ + class FileManager + { + public static String encrypt(String toEncrypt) + { + try { + string textToEncrypt = toEncrypt; + string ToReturn = ""; + string publickey = "santhosh"; + string secretkey = "engineer"; + byte[] secretkeyByte = { }; + secretkeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey); + byte[] publickeybyte = { }; + publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey); + MemoryStream ms = null; + CryptoStream cs = null; + byte[] inputbyteArray = System.Text.Encoding.UTF8.GetBytes(textToEncrypt); + using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) + { + ms = new MemoryStream(); + cs = new CryptoStream(ms, des.CreateEncryptor(publickeybyte, secretkeyByte), CryptoStreamMode.Write); + cs.Write(inputbyteArray, 0, inputbyteArray.Length); + cs.FlushFinalBlock(); + ToReturn = Convert.ToBase64String(ms.ToArray()); + } + return ToReturn; + } catch (Exception ex) + { + throw new Exception(ex.Message, ex.InnerException); + } + + } + + + public static String decrypt(String toDecrypt) + { + try + { + string textToDecrypt = toDecrypt; + string ToReturn = ""; + string publickey = "santhosh"; + string privatekey = "engineer"; + byte[] privatekeyByte = { }; + privatekeyByte = System.Text.Encoding.UTF8.GetBytes(privatekey); + byte[] publickeybyte = { }; + publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey); + MemoryStream ms = null; + CryptoStream cs = null; + byte[] inputbyteArray = new byte[textToDecrypt.Replace(" ", "+").Length]; + inputbyteArray = Convert.FromBase64String(textToDecrypt.Replace(" ", "+")); + using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) + { + ms = new MemoryStream(); + cs = new CryptoStream(ms, des.CreateDecryptor(publickeybyte, privatekeyByte), CryptoStreamMode.Write); + cs.Write(inputbyteArray, 0, inputbyteArray.Length); + cs.FlushFinalBlock(); + Encoding encoding = Encoding.UTF8; + ToReturn = encoding.GetString(ms.ToArray()); + } + return ToReturn; + } + catch (Exception ae) + { + throw new Exception(ae.Message, ae.InnerException); + } + } + } + + + + + + +} diff --git a/PolyChat/PolyChat.csproj b/PolyChat/PolyChat.csproj index 12041a4..c047509 100644 --- a/PolyChat/PolyChat.csproj +++ b/PolyChat/PolyChat.csproj @@ -137,6 +137,7 @@ +