使用RSA解密字符串

时间:2013-09-13 05:14:25

标签: javascript algorithm math encryption rsa

方案如下:我被要求在Javascript中实现解密算法,以使用以下算法解密使用RSA编码的字符串:

  1. 将字符串转换为某些整数列表(4个字符到1个整数)我们将此列表称为[[]。
  2. 对u []:e[i] = RSA((u[i]-e[i-1]) mod n), e[-1] = 0
  3. 中的所有元素应用此操作
  4. 然后我们得到整数的加密列表e []。
  5. 第2步的文字说明: 我们加密第一个元素,从第二个元素中减去加密的第一个元素。然后我们做(模数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
    

    这似乎也没有在哪里......

1 个答案:

答案 0 :(得分:0)

第二步没有多大意义,不应该是:

e[i] = RSA((u[i]-e[i-1]) mod n), e[-1] = 0

即,模数与指数无关。这没有多大意义,因为得到e[0]你必须计算0模的东西(同样荒谬地除以零),而对于e[1],你必须计算模1的东西和结果总是0。

此外,如果n是RSA模数,则对于纯文本0 <= u[i] < n。这意味着反向的第二步只是

u[i] = (RSA'(e[i]) + e[i-1]) mod n