/// <summary>
 /// Derives the specified password by applying the given <paramref name="options"/> to
 /// the underlying implementations.
 /// </summary>
 /// <param name="password">The password.</param>
 /// <param name="options">The options.</param>
 /// <returns></returns>
 public static string Derive(string password, PasswordHasherOptions options)
 {
     PasswordHasherBase kdb = PasswordHasherFactory.GetInstance(options.Algorithm);
     return kdb.Compute(password, options);
 }
 /// <summary>
 /// Derives a key from the given password, using sane defaults.
 /// </summary>
 /// <remarks>
 /// This method is using the PBKDF2 algorithm underneath, with random salts
 /// of size 16 bytes, and an interation count in the interval [8000;9000].
 /// 
 /// The SHA2 hash is used for the HMAC algorithm
 /// </remarks>
 /// <param name="password">The master password to derive a key from</param>
 /// <returns></returns>
 public static string Derive(string password)
 {
     // default settings are good..
     PasswordHasherOptions options = new PasswordHasherOptions();
     return Derive(password, options);
 }