Making Hashing Simpler in C Sharp
This is a simple project in which it make hashing simpler and cleaner in your own code bases. This is not intended to be a complex project however it may grow in the next period.
EasyHash comes with an Interface (Midnite81.EasyHash.Contracts.IHasher)
should you wish to bind it with the concrete class
(Midnite81.EasyHash.Hasher).
To make the hashing process more secure the Salt, unless specified, is randomly generated to make the process more secure.
public void CreateAHash(){ var hasher = new Hasher(); Hash generatedHash = hasher.MakeHash("password"); // you will need to save both the hash string and salt string to the database, // so that when you come to check them you're able to pass both to the verify function ExampleSaveToDatabaseFunction( generatedHash.HashString, generatedHash.Salt.String);}
public void GenerateSalt(){ var hasher = new Hasher(); Salt generatedSalt = hasher.GenerateSalt(24); // returns Salt // generatedSalt.String is the base64 string you can store in the database should you wish // generatedSalt.Bytes is the array of bytes which form the salt}
public void CheckHashesMatch(){ var hasher = new Hasher(); byte[] salt = hasher.ConvertStringToBytes(GetUsersSaltFromDatabase()); byte[] hash = hasher.ConvertStringToBytes(GetUsersHashFromDatabase()); bool compare = hasher.VerifyHash("password_I_want_to_check", salt, hash); if (compare) { // they matched } else { // they didn't match }}