Skip to content

.NET standard library to secure the passwords using multiple hashing algorithms.

License

Notifications You must be signed in to change notification settings

LoginRadius/csharp-password-hash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

csharp-password-hash

.NET standard library to secure the passwords using multiple hashing algorithms.

Features

  • Secure the passwords using different types of hashing algos
  • Uses of the different Encoding types
  • Generating random salt
  • Unit test cases to check the library fuctionality

Getting Started

  • Must have the latest version of the Visual Studio

Clone csharp-password-hash into your system using below commands:

Open command prompt and type below commands

git clone https://github.com/LoginRadius/csharp-password-hash
cd csharp-password-hash
csharp-password-hash.sln

It will open the solution into the Visual Studio

Usage

Below are samples to show how you might use the library.

Create user model class

public class User{
  public string EmailId{get;set;}
  public string Password{get;set;}
}

Create user object

//Create user object and set emailId and password properties
var userObject = new User
{
  EmailId = "test@gmail.com",
  Password = "Test#11"
};

Example 1 - Create HashConfig object (When GeneratePerPasswordSalt is true)

//Create HashConfig object and set below properties
var hashConfig = new HashingConfig
{
  GeneratePerPasswordSalt = true, // This property is used when we have generate different password salt
  GlobalSalt = null, // This is used when we have to use the same salt for every password
  SaltedPasswordFormat = "#PasswordPlaceHolder#--#SaltPlaceHolder#",// Format which will be used in salted password 
  HashingAlgo = HashingAlgo.MD5, // Hashing algo which we want to use
  PasswordHashEncodingType = EncodingType.Default // Encoding type for password hashing
};

Check password (When GeneratePerPasswordSalt is true)

//Combine the user object and HashConfig object (When GeneratePerPasswordSalt is true)
//Create method to check password
public void ValidatePassword()
{
  var userObject = new User
  {
   EmailId = "test@gmail.com",
   Password = "Test#11"
  };
  var hashConfig = new HashingConfig
  {
    GeneratePerPasswordSalt = true,
    GlobalSalt = null,
    SaltedPasswordFormat = "#PasswordPlaceHolder#--#SaltPlaceHolder#",
    HashingAlgo = HashingAlgo.MD5,
    PasswordHashEncodingType = EncodingType.Default
  };
  var passwordHashing = new PasswordHashing(); // Create password hashing object
  var hash = passwordHashing.GetHash(userObject.Password, hashConfig); // GetHash for the password
  var match = passwordHashing.CheckPassword(hash, hashConfig, userObject.Password); //Check password
}

Example 2 - Create HashConfig object (When GeneratePerPasswordSalt is false)

//In that case we have to set the GlobalSalt property
//Create HashConfig object and set below properties
var hashConfig = new HashingConfig
{
  GeneratePerPasswordSalt = false, \
  GlobalSalt = SecureSalt, 
  SaltedPasswordFormat = "#PasswordPlaceHolder#--#SaltPlaceHolder#",
  HashingAlgo = HashingAlgo.MD5, 
  PasswordHashEncodingType = EncodingType.Default 
};

Check password (When GeneratePerPasswordSalt is false)

//Combine the user object and HashConfig object (When GeneratePerPasswordSalt is false)
//Create method to check password
public void ValidatePassword()
{
  var userObject = new User
  {
   EmailId = "test@gmail.com",
   Password = "Test#11"
  };
  var hashConfig = new HashingConfig
  {
    GeneratePerPasswordSalt = false,
    GlobalSalt = "SecureSalt",
    SaltedPasswordFormat = "#PasswordPlaceHolder#--#SaltPlaceHolder#",
    HashingAlgo = HashingAlgo.MD5,
    PasswordHashEncodingType = EncodingType.Default
  };
  var passwordHashing = new PasswordHashing(); // Create password hashing object
  var hash = passwordHashing.GetHash(userObject.Password, hashConfig); // GetHash for the password
  var match = passwordHashing.CheckPassword(hash, hashConfig, userObject.Password); //Check password
}

Contributing

Would love any contributions by you, including better documentation, tests or more robust functionality. Please follow the contributing guide

License

MIT

About

.NET standard library to secure the passwords using multiple hashing algorithms.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages