private static void HashPassword(string passwordToHash, int numberOfRounds)
        {
            var sw = new Stopwatch();

            sw.Start();

            var hashedPassword = PBKDF2.HashPassword(Encoding.UTF8.GetBytes(passwordToHash),
                                                     PBKDF2.GenerateSalt(),
                                                     numberOfRounds);

            sw.Stop();

            Console.WriteLine();
            Console.WriteLine("Password to hash : " + passwordToHash);
            Console.WriteLine("Hashed Password : "******"Iterations <" + numberOfRounds + "> Elapsed Time : " + sw.ElapsedMilliseconds + "ms");
        }
        public static void Main()
        {
            // TODO : Calculate a PBKDF2 hash for a password but with different levels of difficulty.
            // TODO : Base64 the results and display on the console.

            // TODO : For bonus points, time the results of each difficulty level and print to the console.

            var inputMessage1            = "Hello, World!";
            var inputMessage1AsByteArray = Encoding.UTF8.GetBytes(inputMessage1);
            var salt = PBKDF2.GenerateSalt();

            for (int i = 0; i < 24; i++)
            {
                var stopWatch  = new Stopwatch();
                var iterations = 2 << i;

                stopWatch.Start();
                var result = PBKDF2.HashPassword(inputMessage1AsByteArray, salt, iterations);
                stopWatch.Stop();

                Console.WriteLine($"Hashing '{inputMessage1}' took {stopWatch.ElapsedMilliseconds}ms with {iterations} iterations, result = {Convert.ToBase64String( result)}");
            }
        }