Почему SHA1.ComputeHash терпит неудачу при высокой нагрузке со многими потоками?

Я вижу проблему с некоторым кодом, который я поддерживаю. Код ниже имеетprivate static SHA1 член (который являетсяIDisposable но так как этоstaticэто никогда не должно быть завершено). Однако в состоянии стресса этот код вызывает исключение, которое предполагает, что он был закрыт:

Caught exception.  Safe handle has been closed" 
Stack trace: Call stack where exception was thrown
at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)
at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 cbData, Int32 ibStart, Int32 cbSize)
at System.Security.Cryptography.Utils.HashData(SafeHashHandle hHash, Byte[] data, Int32 ibStart, Int32 cbSize)
at System.Security.Cryptography.HashAlgorithm.ComputeHash(Byte[] buffer)

Код в вопросе:

internal class TokenCache
{
    private static SHA1 _sha1 = SHA1.Create();

    private string ComputeHash(string password)
    {
        byte[] passwordBytes = UTF8Encoding.UTF8.GetBytes(password);
        return UTF8Encoding.UTF8.GetString(_sha1.ComputeHash(passwordBytes));
    }

Мой вопрос, очевидно, что может вызвать эту проблему. Можно позвонитьSHA1.Create молча провалиться (сколько криптографических ресурсов доступно)? Может ли это быть вызвано падением appdomain?

Любые другие теории?

Ответы на вопрос(1)

Ваш ответ на вопрос