我有一個Web API項目,在其中一個端點中,我使用Bouncy Castle庫生成RSA密鑰對。在進行一些負載測試時,在對Web API發出1500個並行請求後,我開始得到504(超時錯誤)。經過一番調查後,我意識到這是造成它的Bouncy Castle。所以現在我想用一百萬個RSA密鑰對預加載一張表,並在需要時從表中獲取它們。下面是我的代碼,我正在生成密鑰對使用BC:Bouncy Castle需要很長時間才能生成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();
}
那麼幾個問題,有什麼我做錯了在上面的代碼(它工作正常,但如果有什麼我做這可能是造成延遲並可以避免)?另外,如果我採用其他方法(預加載100萬個密鑰對的SQL表),那麼用100萬條記錄填充表的最佳方法是什麼? (最好使用ADO.net)
由於推薦使用1024位以上的2048位密鑰,因此情況會變得更糟。也許嘗試通過.Net的RSACryptoServiceProvider() - > ExportParameters()進行比較,因爲實現將有所不同。 –
我會嘗試看看RSACryptoServiceProvider是否有所作爲。謝謝 – tavier