public HashedPassword HashPassword(string password)
        {
            byte[] salt = this.GenerateSalt();
            var    hash = ComputeHash(password, salt);

            HashedPassword hashedPassword = new HashedPassword(salt, Convert.ToBase64String(hash));

            return(hashedPassword);
        }
        public bool IsValid(string UserPassword, HashedPassword DBPass, int iterations = HasingIterationsCount, int hashByteSize = HashByteSize)
        {
            var userHash = ComputeHash(UserPassword, DBPass.Salt, iterations);

            if (Convert.ToBase64String(userHash) == DBPass.Hash)
            {
                return(true);
            }

            return(false);
        }
        private void Signup_Click(object sender, EventArgs e)
        {
            HashedPassword hashedUserPassword = pm.HashPassword(textBoxPassword.Text);

            //I use a local file as a "datebase" and use the different lines to store the user
            string[] lines = { textBoxUsername.Text, hashedUserPassword.Hash, Convert.ToBase64String(hashedUserPassword.Salt) };
            using (StreamWriter outputFile = new StreamWriter("User.txt"))
            {
                foreach (string line in lines)
                {
                    outputFile.WriteLine(line);
                }
            }
        }
        private void Login_Click(object sender, EventArgs e)
        {
            var userFile    = File.ReadAllLines("User.txt");
            var userDetails = new List <string>(userFile);

            HashedPassword ValidateUserPassword = new HashedPassword(Convert.FromBase64String(userDetails[2]), userDetails[1]);

            if (pm.IsValid(textBoxPassword.Text, ValidateUserPassword))
            {
                MessageBox.Show("Status", "Login is correct");
            }
            else
            {
                MessageBox.Show("Status", "Login is wrong");
            }
        }