У меня очень странная ситуация.
В основном у меня есть код, который использует декриптор, созданный:
Dim des3 As New TripleDESCryptoServiceProvider
des3.Mode = CipherMode.CBC
Return des3.CreateDecryptor(_encKey, _initVec)
_encKey и _initVec жестко закодированы.
Я использую его по телефону:
Dim res() As Byte = decrypt(Convert.FromBase64String(_data))
m_transformDec.TransformFinalBlock(res, 0, res.Length)
Здесь _data - строка, содержащая зашифрованное значение. m_transformDec - расшифровщик, созданный ранее.
Обычно это работает. Иногда я получаю ошибку «неверные данные». Я распечатываю значение _data, и оно всегда одинаково.
Код является многопоточным, что, как я подозреваю, является причиной как проблемы, так и ее трудно воспроизвести. Расшифровщик создается при создании класса, а расшифровка выполняется в общей функции, но я не вижу там ничего, что не является потокобезопасным.
Есть идеи?