示例#1
0
 public void Clear()
 {
     Password.TryClear(clearAfterUse: true);
     Salt.TryClear(clearAfterUse: true);
     InitialVector.TryClear(clearAfterUse: true);
     PasswordIterations = 0;
     KeySize            = 0;
 }
示例#2
0
        public byte[] DeriveKey(string password)
        {
            var passwordDeriveBytes = new PasswordDeriveBytes(password, PasswordSalt);
            var initialVector       = new byte[InitialVector.Length];

            InitialVector.CopyTo(initialVector, 0);
            return(passwordDeriveBytes.CryptDeriveKey(SymmetricAlgorithm.GetType().BaseType.Name,
                                                      PasswordHashAlgorithm.GetType().BaseType.Name,
                                                      SymmetricAlgorithm.LegalKeySizes.First().MaxSize,
                                                      initialVector));
        }
示例#3
0
        /// <summary>
        /// Implements <seealso cref="IDisposable.Dispose()"/>
        /// </summary>
        public void Dispose()
        {
            // Clear data
            try
            {
                Password.TryClear(clearAfterUse: true);
                Salt.TryClear(clearAfterUse: true);
                InitialVector.TryClear(clearAfterUse: true);
                PasswordIterations = 0;
                KeySize            = 0;
            }
            catch (Exception)
            {
                // ignored
            }

            OnDisposing();
        }