据我所知,微软的 RSA CSP 总是生成相同的位长伪素数。因此,如果密钥大小为 1024,那么 P 和 Q 值似乎(?)保证每个都是 512 位?有谁知道事实是否如此?
我正在我自己的 RSA 实现和 Microsoft 的实现之间构建一个互操作性模块。就我而言,我在 P & Q 值之间建立了一个小的随机方差,因此对于 1024 位密钥,我最终可能会得到一个值为 506 位和另一个 518 的值。在纯粹的实验基础上,如果我将方差锁定为 0(即P & Q 值的大小相等)- 事情按应有的方式工作,我一旦将大小变量设为 Microsoft RSA 对象,就会在导入过程中响应“错误数据”。
我正在寻找 Microsoft 强制执行相同密钥大小的确认,因此如果有人对此有任何信息,请发布
在有人问我为什么必须实现自己的 RSA 提供程序之前: CryptoAPI 在多线程环境中表现不佳,它会在 CryptoServiceProvider 调用上锁定机器密钥库;如果从多个线程访问,这意味着“找不到文件”(相当神秘)错误
对于那些关心的人,请看这里:http: //blogs.msdn.com/b/alejacma/archive/2007/12/03/rsacryptoserviceprovider-fails-when-used-with-asp-net.aspx