如何选择随机元素 α ∈ Z*p? P 是一个随机的 1024 位素数 BigInteger。
这是我找到 BigInteger p 的方法:
Random rand = new Random(new Date().getTime());
BigInteger p= new BigInteger(1024, rand);
while(!p.isProbablePrime(3))
{
BigInteger p= new BigInteger(1024, rand);
}
提前致谢。
最佳答案
我认为这是Java。在这种情况下,您实际上并没有选择 1024 位素数。您选择的是 0 到 $2^{1024}$ 之间的质数。不过还是看一下 API。有一个静态方法,称为 probableprime 之类的东西,它会给你一个给定位长度的可能素数。
现在要对 Z_p$ 中的数字 $a\in 进行采样,您可以使用之前使用的方法对 0 到 $2^{1024}$ 之间的随机数 $r$ 进行采样。然后检查是否$r < p$。如果不重新编码$r$,直到得到$r < p$。这称为拒绝采样,在这种情况下应该相当有效。
但是,您应该确保 Java 使用的随机性足以满足您的目的。
关于rsa - 如何找到一个小于另一个随机 BigInteger 的随机 BigInteger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27484254/