J'ai une situation très étrange. Fondamentalement, j'ai le code qui utilise un décrypteur Créé par:Erreur occasionnelle de mauvaises données lors du décryptage
Dim des3 As New TripleDESCryptoServiceProvider
des3.Mode = CipherMode.CBC
Return des3.CreateDecryptor(_encKey, _initVec)
Le _encKey et _initVec sont hardcoded. Je l'utilise en appelant:
Dim res() As Byte = decrypt(Convert.FromBase64String(_data))
m_transformDec.TransformFinalBlock(res, 0, res.Length)
Ici _data est une chaîne contenant la valeur chiffrée. m_transformDec est le déchiffreur créé précédemment.
Habituellement cela fonctionne. Parfois, j'obtiens une erreur "mauvaises données". J'imprime la valeur de _data, et c'est toujours pareil.
Le code est multithread, ce qui je pense est la raison du problème, et il est difficile à reproduire. Le décrypteur est créé lors de la création de la classe, et le décryptage est effectué dans une fonction partagée, mais je n'y vois rien qui ne soit pas sécurisé par les threads.
Des idées?