C# - 获取RSA加密进度

C# - Get RSA encryption progress

如何获取RSA加密进度?我想在进度条中显示它。 感谢您的帮助。

    using System.Security.Cryptography; 
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(4096);

//I want to get percentage process of this function, because it takes a lot of time.
byte[] encrypted = RSA.Encrypt(Encoding.Default.GetBytes("some text", true));

查看此博客 post:https://www.codeproject.com/Articles/10877/Public-Key-RSA-Encryption-in-C-NET

您可以让 for 循环的每次迭代都增加进度条。

如需更具体的帮助post您的代码并让我们知道您卡在哪里。

使用 16k 位密钥,我可以在 2893 毫秒内进行 1000 次加密调用(因此每次约 3 毫秒),这似乎还不够慢,不需要进度条。

另一方面,

Decrypt 在 1000 次调用中耗时 458,554 毫秒(因此每次约 460 毫秒)。但是半秒似乎仍然不能保证进度条。而且拥有 16k 位 RSA 密钥的人并不多(因为它们需要数小时才能生成)

其他一些快速数字(每 1000 次调用的时间,以毫秒为单位):

Keysize | Encrypt | Decrypt
--------|---------|--------
  16384 |    2893 | 458554
   4096 |     216 |  14636
   3584 |     182 |  13259
   3072 |     149 |   8370
   2560 |     127 |   4680
   2048 |      94 |   2083
   1536 |      86 |   1236
   1024 |      71 |    473
    512 |      64 |    150

所以你能做的最好的就是发送短信的假进度条......你可以试探一下你认为需要多长时间,然后人为地移动进度条,然后做一个"eep" 80% 的时刻,实际上还没有完成。

由于指南是只对 bootstrap 对称操作使用非对称操作(正如评论中已经建议的那样),如果它们'我们的速度足够慢,您可以保证。如果您想为非对称操作添加软糖因素,那也没什么坏处。