C # Excluir variáveis com segurança da memória

Estou criando um programa relacionado à segurança e quero ter certeza de que estou fazendo isso da maneira certa. Quando alguém faz login com uma senha, uma chave secreta é descriptografada e armazenada em uma variável. Quando eles terminam a sessão, quero que os dados na memória sejam apagados completamente dessa chave secreta, e não apenas marcados como excluídos. Atualmente, estou fazendo o seguinte:

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;
}

O que eu quero saber é se isso será suficiente para apagar completamente a chave secreta (_phraseHash) do sistema.

Também isso é necessário? Na verdade, eu não sei muito sobre como os dados na memória são excluídos, apenas presumi que seria algo semelhante ao funcionamento dos discos rígidos, onde os bytes são marcados como excluídos e reescritos quando algo mais precisar do espaço.

questionAnswers(1)

yourAnswerToTheQuestion