J'ai un projet Web API où, dans l'un des points d'extrémité, j'utilise la bibliothèque Bouncy Castle pour générer des paires de clés RSA. Tout en faisant des tests de charge j'ai commencé à obtenir 504 (erreur de timeout) après dire 1500 demandes parallèles à mon API Web. Après quelques recherches, j'ai réalisé que c'était Bouncy Castle qui le provoquait. Alors maintenant je pense à précharger une table avec disons 1 million de paires de clés RSA et les obtenir de cette table quand j'en ai besoin. Voici mon code où je suis générer keypair en utilisant BC:Bouncy Castle prend beaucoup de temps pour générer une paire de clés RSA
var r = new RsaKeyPairGenerator();
r.Init(new KeyGenerationParameters(new SecureRandom(), 1024));
var keyPair = r.GenerateKeyPair();
var publicKey = string.Empty;
using (var stream = new MemoryStream())
{
var textWriter = new StreamWriter(stream);
var pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(keyPair.Public);
pemWriter.Writer.Flush();
stream.Position = 0;
var sr = new StreamReader(stream);
publicKey = sr.ReadToEnd();
textWriter.Close();
}
var privateKey = string.Empty;
using (var stream = new MemoryStream())
{
var textWriter = new StreamWriter(stream);
var pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(keyPair.Private);
pemWriter.Writer.Flush();
stream.Position = 0;
var sr = new StreamReader(stream);
privateKey = sr.ReadToEnd();
textWriter.Close();
}
donc quelques questions, est-ce que je fais mal dans le code ci-dessus (il fonctionne très bien, mais s'il y a quelque chose que je fais ce qui est peut-être causant le retard et peut être évité)? Aussi, si je vais avec l'autre approche (préchargement de la table SQL avec 1 million de paires de clés), quel serait le meilleur moyen de peupler la table avec 1 million d'enregistrements? (de préférence en utilisant ADO .net)
Il va s'aggraver car une clé de 2048 bits est recommandée sur 1024 bits. Essayez peut-être de le faire via RSACryptoServiceProvider() -> ExportParameters() de .Net pour comparer car l'implémentation sera différente. –
Je vais essayer de voir si RSACryptoServiceProvider fait une différence. Merci – tavier