【问题标题】:Large Number Storage大容量存储
【发布时间】:2014-07-12 20:56:00
【问题描述】:

我正在尝试为学校项目实施RSA Key Generation algorithm。我在算法的加密阶段遇到问题。它要求我将用户输入的整数提高到随机数的幂(随机数有一个标准),这些随机数通常是 2 或 3 位数长;例如。 23^239 = d。在大多数情况下,“d”值是 100 位数字长,我找不到任何东西来存储它。我试过long long,但返回值总是负数。

如何生成和存储非常大的数字?

【问题讨论】:

标签: c++ math rsa


【解决方案1】:

RSA 中的所有幂运算都是模幂运算。也就是说,您永远不会只计算23^239...,而是会计算类似23^239 mod 11 的东西。您可以计算幂,然后计算模数....但正如您所见,这需要能够表示一个相当大的数字。相反,一个人同时进行这两项操作;这样效率更高,并且不需要太多存储空间。

有关更多详细信息和算法,请参阅https://en.wikipedia.org/wiki/Modular_exponentiation

(请注意,通常情况下,您仍然需要一个用于 RSA 的 bigint 库,因为您将使用数百位长的数字,而不是 2 或 3 位长。这里的任务似乎不过,它的设计目的是让您不必这样做。)

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多