rsa - 如何找到一个小于另一个随机 BigInteger 的随机 BigInteger?

标签 rsa random java

如何选择随机元素 α ∈ 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/

相关文章:

cryptography - RSA加密问题[有效负载数据大小]

c# - 如何在 Android 中使用 C# 生成的 RSA 公钥?

java - HYBRIS - 组件和插槽如何在 JSP 文件中工作?

java - 使用 Autowire 时,在哪里设置要连接的 bean?

qt - Qt 支持 RSA 加密吗?

java - 如何使用 RSA 加密 AES key 而不遇到 "javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes"

objective-c - 在 Objective-C 中生成随机数

Java使用beta分布生成0到1的随机数

javascript - 我怎样才能创建一个随机的数学语句并让计算机解决它?

java - 如何在每次迭代后发送成功消息