RSA计算c ^ d mod n

时间:2011-03-02 17:17:31

标签: encryption rsa

在RSA加密算法中,当c^d mod nc为大数时,如何计算d

3 个答案:

答案 0 :(得分:3)

GMP是一个C / C ++软件库,可以为您完成此任务:文档中的mpz_powm,mpz_powm_ui。使用的方法(很大程度上)在the wikipedia page中进行了解释,您可以尝试阅读GMP的源代码,如果您对此感到满意......

答案 1 :(得分:0)

" powMod"操作可以缩小到更小的步骤。

例如,5 ^ 3 % 6相等((5 * 5) % 6) * 5 % 65 ^ 4 % 6等于(((5 * 5) % 6) * 5 % 6) * 5 % 6)。正如您所看到的,您可以在指数的子结果中应用模运算,以便始终使用较小的数字,从而即使c和d为高值,也可以更轻松地计算c ^ d % n

了解更多信息: http://en.wikipedia.org/wiki/Modular_exponentiation

答案 2 :(得分:0)

简单的答案是:使用在“大整数”上实现算术的语言和/或库,并包括用于模幂运算的适当函数。在Java中,这意味着使用java.lang.BigInteger,特别是方法modPow()

由于底层计算机无法真正处理“整数”,但其有限的仿真(例如“32位整数”表现得像整数,除了超过32位的高位被丢弃),这种“大整数”实现必须应用一些特定算法,在Handbook of Applied Cryptography(第14章)中详细描述。