public static string GenerateHashedPassword(string password, string salt, string secretKey) { byte[] secretKeyBytes = new System.Text.UTF8Encoding().GetBytes(secretKey); byte[] passwordBytes = new System.Text.UTF8Encoding().GetBytes(password); // Because the salt is stored in base-64 we just need to convert it back to // an array of bytes byte[] saltBytes = Convert.FromBase64String(salt); var hashInput = new byte[passwordBytes.Length + saltBytes.Length]; passwordBytes.CopyTo(hashInput, 0); saltBytes.CopyTo(hashInput, passwordBytes.Length); using (var hash = new HMACSHA256(secretKeyBytes)) { // Compute a hash based on the password + salt and convert to base64 string byte[] hashBytes = hash.ComputeHash(hashInput); string hashValue = Convert.ToBase64String(hashBytes); return(hashValue); } }