private static bool CheckPassword(string userName, string password) { if (!Users.ContainsKey(userName)) { return(false); } User user = Users[userName]; string saltedHashedPassword = Protector.SaltAndHash(password, user.Salt); return(saltedHashedPassword == user.SaltedHashedPassword); }
private static User Register(string userName, string password) { RandomNumberGenerator rng = RandomNumberGenerator.Create(); var saltBytes = new byte[16]; rng.GetBytes(saltBytes); string saltText = Convert.ToBase64String(saltBytes); string saltedHashedPassword = Protector.SaltAndHash(password, saltText); User user = new User { Name = userName, Salt = saltText, SaltedHashedPassword = saltedHashedPassword }; Users.Add(user.Name, user); return(user); }
static void Main(string[] args) { Write("Enter your name: "); string name = ReadLine(); Write("Enter your credit card number: "); string creditCardNumber = ReadLine(); Write("Enter your password: "******"Customers", new XElement("Customer")); XElement customer = customers.Element("Customer"); customer.Add(new XElement("name", name)); customer.Add(new XElement("creditcard", encryptedCreditCardNumber)); customer.Add(new XElement("password", saltedAndHashedPassword)); string xmlPath = Path.Combine(Environment.CurrentDirectory, Path.GetRandomFileName() + ".xml"); using (StreamWriter stream = File.CreateText(xmlPath)) { stream.Write(customers.ToString()); } using (StreamReader stream = File.OpenText(xmlPath)) { string cusomersString = stream.ReadToEnd(); XDocument xml = XDocument.Parse(cusomersString); encryptedCreditCardNumber = xml.Element("Customers").Element("Customer").Element("creditcard").Value; creditCardNumber = Protector.Decrypt(encryptedCreditCardNumber, EncryptionPassword); WriteLine($"Decrypted credit card number: {creditCardNumber}"); } }