场景如下:我被要求在Javascript中实现一个解密算法,以解密使用以下算法的RSA编码的字符串:
1. 将字符串转换为一些整数列表(4个字符对应1个整数),我们称之为u[]。 2. 对于u[]中的所有元素应用此操作:
步骤2的文本描述: 我们加密第一个元素,从第二个元素中减去加密的第一个元素。然后我们执行(模n)并加密结果。这个过程持续进行到其余数字。
现在问题是解密部分。我已经卡在这部分好几个小时了! 我尝试通过方程式来解决问题,目标是使u[n]成为主题:
我们知道:
因此,根据(1)和(3)的内容。
1. 将字符串转换为一些整数列表(4个字符对应1个整数),我们称之为u[]。 2. 对于u[]中的所有元素应用此操作:
e[i] = RSA((u[i]-e[i-1]) mod n), e[-1] = 0
。
3. 然后我们得到加密的整数列表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
那似乎也没有任何进展...