C#-获取RSA加密进度

C#-获取RSA加密进度,c#,encryption,rsa,progress,C#,Encryption,Rsa,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.En

如何获得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));
查看此博客帖子:

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


要获得更具体的帮助,请发布您的代码并让我们知道您遇到了什么问题。

使用16k位密钥,我可以在2893ms内完成1000次加密调用(因此每次~3ms),这似乎不够慢,不需要进度条

另一方面,1000次呼叫的解密时间为458554ms(因此每次约460ms)。但半秒钟似乎还不能保证进度条。并不是很多人拥有16k位RSA密钥(因为生成密钥需要几个小时)

其他一些快速号码(每1000次呼叫的时间,单位为毫秒):

所以,你最好能做的就是假进度条发送短信。。。你做了一些你认为需要多长时间的试探,人为地移动进度条,然后在80%的时候做一个“eep”时刻,当它实际上没有完成的时候


由于指导原则是只使用非对称操作来引导对称操作(正如评论中已经建议的那样),因此如果对称操作的速度足够慢,您可以在对称操作上使用进度条。如果您想为非对称操作添加一个模糊因子,那么将总字节数保留在一个变量中,并在加密时将当前字节数保留在另一个变量中不会有任何影响。

。阅读,展示你的代码,并解释你尝试了什么。你不能,这种方法不会报告进度。如果可能的话,您唯一的选择是调用该方法或具有较小数据块的类似方法,在两者之间更新进度。但是,您通常不会使用RSA加密对大型二进制文件进行加密。相反,您可以生成一个随机密钥并使用更快的加密方法,如RIJNDAEL,只使用RSA加密密钥。谢谢。我会的,用AES代替RIJNDAEL。AES是Rijndael的一个子集,Rijndael在许多平台上都不可用,而AES是。AES->高级加密标准。在一些实现中,AES作为Rijndael的一个选项可用,并且是默认的很多倍。谢谢,但我使用的是RSA.Encrypt函数,这只是一个命令。我想了解这个函数的进度,因为它需要很多时间。我想你可以在那里更具体一些。。用一些代码编辑你的问题,这样我们就可以更好地理解你在做什么。您使用什么库进行RSA加密?@Kaprog此库是特定库还是标准库?告诉class
System.Cryptographi…
的完整路径。注意OP使用的是4096位密钥,时间很短。一定还有别的事。
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