【发布时间】:2015-10-23 21:13:57
【问题描述】:
我正在用 C 语言编写一个 RSA 加密算法。我不打算将它投入生产,主要是为了拓宽我对加密的理解。
如何处理 RSA 生成的大量数字?即使使用像 103 这样相对较小的私钥进行解密,我仍然有处理这样的事情的问题:
67^103 mod 143 = (1.21816096336830017301951805581 x 10^188) mod 143
存储这种大小的数字的最佳方法是什么?有没有办法使用标准库来做到这一点? .
【问题讨论】:
-
您可以自己实现所有大数运算,但使用现有的多精度库(如 GMP)会更容易。
-
@ArtjomB。我在想我可以实现一个使用数组来存储以 2^64 为底的数字。我不知道这是否实用。
-
那行得通。不过要小心溢出。你必须实现乘法,然后是除法(对于模)。但说真的,只需使用 GMP。
-
@mstagg RSA 涉及大整数,在您的示例中,您显示了一个实数。这是一个大型 int 库的案例,或者编写一个有教育意义但不会太费力的案例。
-
@Weather Vane 不同意这里
67^103 mod 143是一个大型int图书馆的案例。输入都是 solvable,带有快速简单的整数数学。
标签: c algorithm encryption