diff --git a/Client/Client.cs b/Client/Client.cs index 5b4c873..d718b1f 100644 --- a/Client/Client.cs +++ b/Client/Client.cs @@ -158,7 +158,11 @@ namespace Client Console.WriteLine("enter password"); string password = Console.ReadLine(); - byte[] message = DataParser.getJsonMessage(DataParser.GetLoginJson(username, password)); + string hashUser = Hashing.Hasher.Encrypt(username); + string hashPassword = Hashing.Hasher.Encrypt(password); + Console.WriteLine("hashed to " + hashUser + " " + hashPassword); + + byte[] message = DataParser.getJsonMessage(DataParser.GetLoginJson(hashUser, hashPassword)); initEngine(); this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); diff --git a/Client/Client.csproj b/Client/Client.csproj index 4ade6d5..6aa0290 100644 --- a/Client/Client.csproj +++ b/Client/Client.csproj @@ -15,4 +15,6 @@ + + diff --git a/Client/Program.cs b/Client/Program.cs index 9853e51..331d8a6 100644 --- a/Client/Program.cs +++ b/Client/Program.cs @@ -2,6 +2,8 @@ using Hardware; using Hardware.Simulators; using RH_Engine; +using System.Security.Cryptography; +using System.Text; namespace Client { @@ -12,7 +14,6 @@ namespace Client Console.WriteLine("Hello World!"); //connect fiets? - Client client = new Client(); diff --git a/Hashing/Hasher.cs b/Hashing/Hasher.cs new file mode 100644 index 0000000..aaea498 --- /dev/null +++ b/Hashing/Hasher.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Security.Cryptography; +using System.Text; + +namespace Hashing +{ + class Hasher + { + static string key = "ProftaakRH-B4"; + public static string Encrypt(string text) + { + using (var md5 = new MD5CryptoServiceProvider()) + { + using (var tdes = new TripleDESCryptoServiceProvider()) + { + tdes.Key = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); + tdes.Mode = CipherMode.ECB; + tdes.Padding = PaddingMode.PKCS7; + + using (var transform = tdes.CreateEncryptor()) + { + byte[] textBytes = UTF8Encoding.UTF8.GetBytes(text); + byte[] bytes = transform.TransformFinalBlock(textBytes, 0, textBytes.Length); + return Convert.ToBase64String(bytes, 0, bytes.Length); + } + } + } + } + + public static string Decrypt(string cipher) + { + using (var md5 = new MD5CryptoServiceProvider()) + { + using (var tdes = new TripleDESCryptoServiceProvider()) + { + tdes.Key = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key)); + tdes.Mode = CipherMode.ECB; + tdes.Padding = PaddingMode.PKCS7; + + using (var transform = tdes.CreateDecryptor()) + { + byte[] cipherBytes = Convert.FromBase64String(cipher); + byte[] bytes = transform.TransformFinalBlock(cipherBytes, 0, cipherBytes.Length); + return UTF8Encoding.UTF8.GetString(bytes); + } + } + } + } + } +} diff --git a/Hashing/Hashing.projitems b/Hashing/Hashing.projitems new file mode 100644 index 0000000..127b36a --- /dev/null +++ b/Hashing/Hashing.projitems @@ -0,0 +1,14 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + 70277749-d423-4871-b692-2efc5a6ed932 + + + Hashing + + + + + \ No newline at end of file diff --git a/Hashing/Hashing.shproj b/Hashing/Hashing.shproj new file mode 100644 index 0000000..e427bd6 --- /dev/null +++ b/Hashing/Hashing.shproj @@ -0,0 +1,13 @@ + + + + 70277749-d423-4871-b692-2efc5a6ed932 + 14.0 + + + + + + + + diff --git a/ProftaakRH/ProftaakRH.sln b/ProftaakRH/ProftaakRH.sln index f2df07f..42a23ed 100644 --- a/ProftaakRH/ProftaakRH.sln +++ b/ProftaakRH/ProftaakRH.sln @@ -15,7 +15,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Message", "..\Message\Messa EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DokterApp", "..\DokterApp\DokterApp.csproj", "{B150F08B-13DA-4D17-BD96-7E89F52727C6}" EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Hashing", "..\Hashing\Hashing.shproj", "{70277749-D423-4871-B692-2EFC5A6ED932}" +EndProject Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + ..\Hashing\Hashing.projitems*{5759dd20-7a4f-4d8d-b986-a70a7818c112}*SharedItemsImports = 5 + ..\Hashing\Hashing.projitems*{70277749-d423-4871-b692-2efc5a6ed932}*SharedItemsImports = 13 + ..\Hashing\Hashing.projitems*{b1ab6f51-a20d-4162-9a7f-b3350b7510fd}*SharedItemsImports = 5 + EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU diff --git a/Server/Client.cs b/Server/Client.cs index 5e385be..46b2025 100644 --- a/Server/Client.cs +++ b/Server/Client.cs @@ -5,6 +5,7 @@ using System.Net.Sockets; using System.Text; using Client; using Newtonsoft.Json; +using System.Security.Cryptography; namespace Server { @@ -19,6 +20,7 @@ namespace Server private SaveData saveData; private string username = null; private DateTime sessionStart; + private const string fileName = "userInfo.dat"; @@ -125,6 +127,7 @@ namespace Server } Array.Copy(message, 5, payloadbytes, 0, message.Length - 5); dynamic json = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(payloadbytes)); + saveData.WriteDataJSON(Encoding.ASCII.GetString(payloadbytes)); } @@ -139,9 +142,48 @@ namespace Server private bool verifyLogin(string username, string password) { - return username == password; + Console.WriteLine("got hashes " + username + password); + Console.WriteLine(Hashing.Hasher.Decrypt(username) + " " + Hashing.Hasher.Decrypt(password)); + + if (!File.Exists(fileName)) + { + Console.WriteLine("file doesnt exist"); + + Console.WriteLine("true"); + return true; + } else + { + string[] usernamesPasswords = File.ReadAllLines(fileName); + + foreach (string s in usernamesPasswords) + { + string[] combo = s.Split(";"); + if (combo[0] == username) + { + Console.WriteLine("true"); + return combo[1] == password; + } + } + + } + Console.WriteLine("false"); + return false; + } + private void newUsers(string username, string password) + { + File.Create(fileName); + using (StreamWriter sw = File.AppendText(fileName)) + { + sw.WriteLine(username + ";" + password); + } + } + + + + + public static string ByteArrayToString(byte[] ba) { StringBuilder hex = new StringBuilder(ba.Length * 2); diff --git a/Server/Server.csproj b/Server/Server.csproj index a91c176..cd7c7da 100644 --- a/Server/Server.csproj +++ b/Server/Server.csproj @@ -13,4 +13,6 @@ + +