Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 不使用扩展欧几里德算法的RSA加密中的d查找_Assembly_Rsa_Public Key Encryption_Pic_Number Theory - Fatal编程技术网

Assembly 不使用扩展欧几里德算法的RSA加密中的d查找

Assembly 不使用扩展欧几里德算法的RSA加密中的d查找,assembly,rsa,public-key-encryption,pic,number-theory,Assembly,Rsa,Public Key Encryption,Pic,Number Theory,我正在尝试使用汇编在PIC16微控制器中实现RSA 我写了一个数学库,可以执行加法、减法、乘法和模幂运算(都是无符号的) 但现在我要做的最后一步是找到满足以下条件的“d”: d*e=1(模φ(n)) 我希望避免实现扩展欧几里德算法,该算法有点复杂,需要有符号运算。 我试着用欧拉定理计算它 但是我需要找到φ(φ(n),这是一个复杂的过程,除非p和q是安全素数 我唯一的选择 是通过d=(KN+1)/e循环,同时改变k直到(KN+1)模e=0 所以我现在的问题是:这最后一个公式是计算d的唯一其他选项吗

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

但现在我要做的最后一步是找到满足以下条件的“d”:
d*e=1(模φ(n))
我希望避免实现扩展欧几里德算法,该算法有点复杂,需要有符号运算。

我试着用欧拉定理计算它
但是我需要找到φ(φ(n),这是一个复杂的过程,除非p和q是安全素数

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

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

对于
(e)
,通常会选择一个相对较小且汉明权重较低的素数,如
(65537)
。由于
gcd(65537,phi(n))=1
,乘法逆总是存在的