C # безопасно удалить переменную из памяти
Я делаю программу, связанную с безопасностью, и я хочу быть уверенным, что я делаю это правильно. Когда кто-то входит в систему с паролем, секретный ключ дешифруется и сохраняется в переменной. Когда они выходят из системы, я хочу, чтобы данные в памяти для этого секретного ключа были полностью удалены, а не просто помечены как удаленные. В настоящее время я делаю следующее:
public void Logout()
{
RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider();
for (var i = 0; i < 3; i++)
{
byte[] data = new byte[(int) Math.Round((double) (_phraseHash.Count()))];
rngCsp.GetBytes(data);
int randomNum = BitConverter.ToInt32(data, 0);
_phraseHash = randomNum.ToString();
}
LoggedIn = false;
_phraseHash = null;
}
Я хочу знать, достаточно ли этого для полного удаления секретного ключа (_phraseHash) из системы.
Также это даже необходимо? На самом деле я мало что знаю о том, как данные в памяти удаляются, я просто предположил, что это будет несколько похоже на работу жестких дисков, где байты просто помечаются как удаленные и перезаписанные, когда кому-то еще нужно пространство.