C'est bête tu y es presque...
Je pense que c'est lié au fait que tu utilises un
static RSACryptoServiceProvider csp = ...
Et qu'ensuite tu le réalloues une première fois, dans Encrypte et pas la seconde fois dans Decrypte...
Attention, le RSACryptoServiceProvider est une ressource système non managée (IDisposable). Le fait de l'utiliser en static est une mauvaise idée, le fait de la réallouer à tout va encore pire...
Tu n'as vraiment pas besoin que "csp" soit une variable membre de la classe, encore moins en static. A ta place je l'allouerai dans le constructeur le temps de la génération des clés, et je le jetterai. Pareil pour Encrypt() et Decrypt()...
Genre:
1 2 3 4 5 6 7 8 9
|
public RsaEnc()
{
using (RSACryptoServiceProvider csp = new RSACryptoServiceProvider(2048))
{
_privateKey = csp.ExportParameters(true);
_publicKey = csp.ExportParameters(false);
}
} |
Souvent on note les variables membres avec un '_' en préfixe, ça t'aurait sans doute mis la puce à l'oreille dans ce cas là...
Partager