using System.Security.Cryptography;
private const int iterationCount = 24000;
private const int saltLength = 24;
private const int keyLength = 24;
byte[] salt = new byte[saltLength];
using (var saltProvider = new RNGCryptoServiceProvider()) {
saltProvider.GetBytes(salt);
using (var hashProvider = new Rfc2898DeriveBytes("Password123", salt, iterationCount)) {
hash = hashProvider.GetBytes(keyLength);
string saltString = Convert.ToBase64String(salt);
string hashString = Convert.ToBase64String(hash);
Console.WriteLine("S: " + saltString + " (length: " + saltString.Length + ")");
Console.WriteLine("H: " + hashString + " (length: " + hashString.Length + ")");