public Aes GenerateAes() { if (aes == null) { aes = Aes.Create(); aes.KeySize = 256; aes.Key = EncryptionCore.ComputeSha256Hash(usernameHash + passwordHash); aes.GenerateIV(); byte[] key = new byte[aes.Key.Length + aes.IV.Length + 2]; key[0] = Convert.ToByte(aes.Key.Length); key[1] = Convert.ToByte(aes.IV.Length); int i; for (i = 2; i < aes.Key.Length + 2; i++) key[i] = aes.Key[i - 2]; for (; i < key.Length; i++) key[i] = aes.IV[i - (aes.Key.Length + 2)]; File.WriteAllBytes(GetAvailableFileName(), key); return aes; } return aes; }
public bool AuthenticateLoginDetails(string username, string password) { if (!Directory.Exists("users")) Directory.CreateDirectory("users"); string usernameHash = Encoding.UTF8.GetString(EncryptionCore.ComputeSha256Hash(username)); string passwordHash = Encoding.UTF8.GetString(EncryptionCore.ComputeSha256Hash(password)); byte[] key = EncryptionCore.ComputeSha256Hash(usernameHash + passwordHash); if(key.SequenceEqual(aes.Key)) { this.username = username; this.usernameHash = Encoding.UTF8.GetString(EncryptionCore.ComputeSha256Hash(username)); this.passwordHash = Encoding.UTF8.GetString(EncryptionCore.ComputeSha256Hash(password)); return true; } return false; }
public void SetPassword(string password) { passwordHash = Encoding.UTF8.GetString(EncryptionCore.ComputeSha256Hash(password)); }
public void SetUsername(string username) { this.username = username; usernameHash = Encoding.UTF8.GetString(EncryptionCore.ComputeSha256Hash(username)); }