using System.Security.Cryptography;
public static void Main()
Console.WriteLine("Hello World");
string salt = GenerateSalt();
Console.WriteLine("salt: " + salt);
string hash = GenerateHashWithSalt("password", salt);
Console.WriteLine("hash: " + hash);
static string GenerateSalt()
var saltBytes = new byte[maxSaltLength];
using (var provider = new RNGCryptoServiceProvider())
provider.GetNonZeroBytes(saltBytes);
return Convert.ToBase64String(saltBytes);
static string GenerateHashWithSalt(string password, string salt)
var saltBytes = Convert.FromBase64String(salt);
using (var rfc2898DeriveBytes = new Rfc2898DeriveBytes(password, saltBytes, nIterations))
return Convert.ToBase64String(rfc2898DeriveBytes.GetBytes(nHash));