这与我之前的帖子有关,我唯一的选择是拥有一个似乎相对较弱的 RSA 算法。让我们假设我想用 36 位模数(在 34359738368 到 68719476735 之间)编码一个 35 位数字(从 0 到 34359738367)。
参考http://en.wikipedia.org/wiki/RSA我可以看到我的 n 介于 34359738368 到 68719476735 之间,是一个随机数(形式为 p-1 * q-1)。我选择一个随机的 d 和 e。我编码一个数字并在 UI 上显示。
为了论证的目的,我们假设用户最多可以看到 1,000 个这样的输出。他可以使用像 Polla's 或任何类似的算法来破解我的 d、e 或 n 从而开始预测新数字吗?如果是这样,会有多难?(只知道说 1000 组输入/输出)
作为示例(将 6 个输出视为输入/输出格式的样本),
- 10001621865,31116156015
- 10001621866,33031668326
- 10001621867,37351399313
- 10001621868,06071714212
- 10001621869,01188523761
- 10001621870,18341011998
谁能告诉我我的 n、d、e 是什么?(N 在 34359738368 到 68719476735 之间)
我只是想知道它的可破解性,所以如果你能给我任何关于多长时间、多快、必须看到多少输出、可以使用什么算法等的信息。那就太好了。
PS:用户看不到标准 RSA 算法中的“e”。他只能看到输入输出集。
添加了详细信息 我正在尝试向用户显示从 db 中的顺序用户 ID。因为它是连续的,所以我不希望用户通过一些注册来猜测另一个用户的 id。为避免这种情况,我必须将其打乱为 <= 12 位数字。对此有很多限制,在这个问题中进行了解释。
用户也不知道 n,d 和 e 的值。用户最多可以看到几个输入输出样本(通过重复注册的方式)
接受 Accipitridae 发布的答案,因为“Jacobi”算法可用于在几秒钟内破解此问题。在不知道 n、e 或 p 的情况下。