使用Java生成完全素数

Vie*_*iet 5 java random primes biginteger

我知道函数BigInteger.probablePrime(int bitLength,Random rnd)可能输出任何位长的素数.我想在Java中使用真正的素数.有没有可以接受性能的FOSS库?提前致谢!

编辑:

我正在看1024和2048位素数.

Jas*_*n S 10


编辑:或者,如果您不相信isProbablePrime足够确定,请使用BigInteger构造函数BigInteger(int bitLength, int certainty, Random rnd)来调整您的确定性阈值:

确定性 - 衡量呼叫者愿意容忍的不确定性的指标.新BigInteger表示素数的概率将超过(1 - 1/2 确定性).此构造函数的执行时间与此参数的值成比例.

用于加密目的的概率测试被保证限制误报的可能性 - 它不像存在一些潜在的陷阱数,这只是你想要概率有多低的问题.如果您不相信Java BigInteger类使用它们(如果它们记录了使用的测试会很好),请使用Rabin-Miller测试.

  • +1 - 但是,应该注意到AKS的最坏情况是"O((logN)^ 12)".与分配素数"N"相比,这是快速的,但绝对值并不快. (3认同)
  • 当然,"快"在这里是非常非常相对的. (2认同)
  • +1谢谢!增加确定性肯定会增加安全性. (2认同)
  • "增加确定性肯定会增加安全性" - 你可以相当肯定,但不是绝对肯定.;-) (2认同)