场景如下:我被要求在 Javascript 中实现一个解密算法来解密一个使用 RSA 编码的字符串,其算法如下:
- 将字符串转换为整数列表(4 个字符转换为 1 个整数),我们将此列表称为 u[]。
- 将此操作应用于 u[] 中的所有元素:
e[i] = RSA((u[i]-e[i-1]) mod n), e[-1] = 0
- 然后我们得到加密的整数列表 e[]。
步骤 2 的文字描述:我们加密第一个元素,从第二个元素中减去加密的第一个元素。然后我们做(模n)然后加密结果。对于其余的数字,该过程继续进行。
现在的问题是解密部分。我已经被困在这部分好几个小时了!
我处理了这个方程,目的是让 u[n] 成为主题:
e[i] = RSA((u[i]-e[i-1]) mod n) -- (1)
我们知道:
RSA(x) = x^e mod n -- (2)
RSA'(x) = x^d mod n -- (3)
所以,从(1)和(3)
RSA'(e[i]) = (u[i]-e[i-1]) mod n
RSA'(e[i]) + k*i + e[i-1] = u[i]
然后我有点卡住了,因为我们不知道 k。
所以,我又试了一次:
RSA'(e[i]) = (u[i]-e[i-1]) mod n
(e[i])^d mod n = (u[i]-e[i-1]) mod n
这似乎也无处可去......