using System.Security.Cryptography;
public static void Main()
var stopWatch = new System.Diagnostics.Stopwatch();
Console.WriteLine(stopWatch.ElapsedMilliseconds);
public static string GetHashWithKey()
var keyBytes = new byte[256];
var saltBytes = new byte[256];
using (var generator = RandomNumberGenerator.Create())
generator.GetBytes(keyBytes);
generator.GetBytes(saltBytes);
var key = Convert.ToBase64String(keyBytes);
var pbkdf2 = new Rfc2898DeriveBytes(key, saltBytes, 100_000);
var hashBytes = pbkdf2.GetBytes(256);
return $"{Convert.ToBase64String(saltBytes)}|{100_000}|{Convert.ToBase64String(hashBytes)}";