在没有扩展的euclid算法的情况下在RSA加密中查找d

时间:2014-03-28 20:34:50

标签: assembly rsa public-key-encryption pic number-theory

我正在尝试使用汇编在PIC16微控制器中实现RSA! 我写了一个数学库,可以执行加法,减法,乘法和模幂运算(所有无符号)。

但现在我陷入了寻找" d"的最后一步。满足:
d * e = 1(mod phi(n))
我想避免实现扩展的Euclid算法,这种算法有点复杂,需要签名操作。

我尝试用欧拉定理http://en.wikipedia.org/wiki/Modular_multiplicative_inverse#Using_Euler.27s_theorem来计算它 但是我需要找到phi(phi(n),这是一个复杂的过程,除非p和q是安全的素数。

我唯一的选择 在改变k直到(KN + 1)mod e = 0时循环通过d =(KN + 1)/ e 所以现在我的问题是:这最后一个公式是计算d的唯一其他选项吗? (如果没有)还有什么其他选择?
什么是K的限制?

1 个答案:

答案 0 :(得分:0)

您可以实现二进制扩展欧几里德算法。该算法可以在Handbook of Applied Cryptography - Chapter 14.4.3中找到。它只需要多次精确的加法,减法和移位。注释:14.64描述了如何在这种情况下优化算法以获得乘法逆 - (d)

通常选择(e)的汉明重量较低的相对较小的素数,如(65537)。从gcd(65537, phi(n)) = 1开始,乘法逆将始终存在。