public EncodingResult Encoder(string plainText, HashingConfig config) { byte[] salt = new byte[32]; Rng.GetBytes(salt); var stringSalt = Convert.ToBase64String(salt); return(Encoder(plainText, config, stringSalt)); }
private Argon2d SetHashObject(string password, HashingConfig config) { var bytePassword = Encoding.ASCII.GetBytes(password); byte[] userUuidBytes = Encoding.ASCII.GetBytes(config.AssociatedData); byte[] byteSecret = Encoding.ASCII.GetBytes(config.KnownSecret); var argon2 = new Argon2d(bytePassword); argon2.DegreeOfParallelism = config.DegreeOfParallelism; argon2.MemorySize = config.MemorySize; argon2.Iterations = config.Iterations; argon2.AssociatedData = userUuidBytes; argon2.KnownSecret = byteSecret; return(argon2); }
public EncodingResult Encoder(string plainText, HashingConfig config, string stringSalt) { if (stringSalt == null) { byte[] salt = new byte[32]; Rng.GetBytes(salt); stringSalt = Convert.ToBase64String(salt); } var argon2 = SetHashObject(plainText, config); argon2.Salt = Encoding.ASCII.GetBytes(stringSalt); return(new EncodingResult() { Hash = Convert.ToBase64String(argon2.GetBytes(512)), Salt = stringSalt }); }