我需要为密码学项目生成大素数。我注意到RSA4.0有一些内置的加密原语(例如.NET ),它使用随机生成的大素数(p,q代表RSA)。它们是否都使用公共的内置库,可以从它们的类作用域外部访问,或者我必须使用外部库(我知道素性测试有简单的算法,我只是不想实现更多。)
发布于 2011-12-11 00:18:09
在.NET v4 (以及更高版本)中,微软提供了一个新的程序集System.Numerics.dll,其中包含一个BigInteger类型。然而,它没有提供任何检查素数的方法。
Mono (从1.0之前开始)还在它的Mono.Security.dll程序集中提供了一个[BigInteger][3]类型。您可以按原样使用它,也可以将质数检查方法(存在多个方法)移植到新的微软BigInteger类型。
它们都使用一个公共的内置库吗?这个库是公共的,可以从它们的类范围之外访问
是的,RSACryptoServiceProvider和DSACryptoServiceProvider都会调用CryptoAPI来完成此操作。但是,CAPI不会公开它自己的BigInteger代码(甚至对本机代码),所以它不会对您有所帮助。
发布于 2011-12-10 20:31:41
在您需要的范围内生成一个较大的数字。测试它,看看它是否是质数。如果不是,就拒绝并重复。
对于测试,只需使用素数高达1500的试验除法,然后切换到Miller-Rabin。使用正确实现的Miller-Rabin,硬件故障的可能性比错误地将组合标记为质数的可能性更大。
https://stackoverflow.com/questions/8456111
复制相似问题