首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以在C#中生成大素数,而不使用外部库?

有没有一种方法可以在C#中生成大素数,而不使用外部库?
EN

Stack Overflow用户
提问于 2011-12-10 19:13:50
回答 2查看 3.1K关注 0票数 3

我需要为密码学项目生成大素数。我注意到RSA4.0有一些内置的加密原语(例如.NET ),它使用随机生成的大素数(p,q代表RSA)。它们是否都使用公共的内置库,可以从它们的类作用域外部访问,或者我必须使用外部库(我知道素性测试有简单的算法,我只是不想实现更多。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-11 00:18:09

在.NET v4 (以及更高版本)中,微软提供了一个新的程序集System.Numerics.dll,其中包含一个BigInteger类型。然而,它没有提供任何检查素数的方法。

Mono (从1.0之前开始)还在它的Mono.Security.dll程序集中提供了一个[BigInteger][3]类型。您可以按原样使用它,也可以将质数检查方法(存在多个方法)移植到新的微软BigInteger类型。

它们都使用一个公共的内置库吗?这个库是公共的,可以从它们的类范围之外访问

是的,RSACryptoServiceProviderDSACryptoServiceProvider都会调用CryptoAPI来完成此操作。但是,CAPI不会公开它自己的BigInteger代码(甚至对本机代码),所以它不会对您有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2011-12-10 20:31:41

在您需要的范围内生成一个较大的数字。测试它,看看它是否是质数。如果不是,就拒绝并重复。

对于测试,只需使用素数高达1500的试验除法,然后切换到Miller-Rabin。使用正确实现的Miller-Rabin,硬件故障的可能性比错误地将组合标记为质数的可能性更大。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8456111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档