public void Clear() { Password.TryClear(clearAfterUse: true); Salt.TryClear(clearAfterUse: true); InitialVector.TryClear(clearAfterUse: true); PasswordIterations = 0; KeySize = 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)); }
/// <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(); }