如何通过RSA中的私钥解密c(加密消息)?

时间:2017-09-05 12:34:46

标签: algorithm math encryption rsa

我今天一直在研究RSA算法的概念,这就是我所理解的。

生成密钥对 -

  • 将两个素数(p1 = 53,p2 = 59)相乘以生成n(将用作公共模数)
  • 我们在n变量上使用Euler的totient函数,并定义一个新变量phi
  • 我们生成一个公开指数e,条件是它必须是小奇数不与我们的phi变量共享因子。
  • 私钥d由此公式生成:

    enter image description here

    d = (k * (phi(n)) + 1) / e

  • 我们用变量替换变量并获取私钥:

    enter image description here

    d = (2 * (3016) + 1) / 3 = 2011

    我们替换 -

  • k 2(据我所知k必须大于0且小于phi(n)

  • phi(n)3016(因为p1 * p2 = 3127,因为结果 是一个素数,我们使用p1p2轻松获得其phi。 (phi(n) = (p1-1) * (p2-1)

  • e3的指数(因为它与3016不共享任何因子而且是奇数)

使用公钥 -

之后我们可以分享我们的en,因为计算机需要数十年才能从大n获取私钥。

我们的通信器将消息编码到十六进制中,然后将其转换为base10整数。 Communicator还可以添加随机整数填充以进行保护。

当消息变为数字时,将对其执行模幂运算:

[![在此处输入图像说明] [3]] [3]

因此,如果数字中的消息为89,如果我们对其进行模幂运算,我们将得到:

1394

问题 -

如果我们的通讯员向我们发送1394加密8989^3 * mod(59 * 53) = 1394),我们如何使用我们的私钥自动解密此邮件?是否有一些必须使用的特定配方?

非常感谢你阅读。

1 个答案:

答案 0 :(得分:1)

鉴于:p = 53q = 59e = 3

  • n = p * q = 3127
  • phi(n) = (p-1) * (q-1) = 3016
  • lambda = LCM(p-1, q-1) = 1508
  • dPhi = ModInverse(e, phi(n)) = ModInverse(3, 3016) = 2011
  • dLambda = ModInverse(e, lambda) = ModInverse(3, 1508) = 503
  • 和CRT参数(我们在这里没有使用过)
    • dp = dLambda % (q - 1) = 503 % 58 = 35
    • dq = dLambda % (p - 1) = 503 % 52 = 39
    • inverseQ = ModInverse(q, p) = ModInverse(59, 53) = 9

https://en.wikipedia.org/wiki/Modular_multiplicative_inversehttps://en.wikipedia.org/wiki/Extended_Euclidean_algorithm用于制作ModInverse

请注意,dLambda小于dPhi。虽然最初的RSA论文使用基于phi的模型,但后来它被简化为基于LCM的模型。由于(p-1)(q-1)均为偶数(因为pq是素数!= 2lambda最多为phi / 2 1}},为反向创建一个小得多的模块化空间。

因此,假设我们正在进行原始/未填充RSA(因为此密钥太小而无法使用填充RSA):

鉴于:m = 89

c = m^e % n = 89^3 % 3127 = 704969 % 3127 = 1394

m = c^d % n = 1394^503 % 3127 = 3.666e1581 % 3127 = ???。

相反,我们转到https://en.wikipedia.org/wiki/Modular_exponentiation

m = ModPow(1394, 503, 3127) => ModPow(1394, 0b0001_1111_0111, 3127)

  • R:1,基数:(1394%3127)= 1394,指数:0b0001_1111_0111
  • R:(1 * 1394)%3127 = 1394,基数:(1394 * 1394)%3127 = 1943236%3127 = 1369,指数:0b0000_1111_1011
  • R:(1394 * 1369)%3127 = 1908386%3127 = 916,基数:(1369 * 1369)%3127 = 1874161%3127 = 1088,e:0b0111_1101
  • R:(916 * 1088)%3127 = 996608%3127 = 2222,基数:(1088 * 1088)%3127 = 1183744%3127 = 1738,e:0b0011_1110
  • R:2222,base:(1738 * 1738)%3127 = 3020644%3127 = 3089,e:0b0001_1111
  • R:(2222 * 3089)%3127 = 6863758%3127 = 3120,基数:(3089 * 3089)%3127 = 9541921%3127 = 1444,e:0b0000_1111
  • R:(3120 * 1444)%3127 = 4505280%3127 = 2400,基数:(1444 * 1444)%3127 = 2085136%3127 = 2554,e:0b0111
  • R:(2400 * 2554)%3127 = 6129600%3127 = 680,基数:(2554 * 2554)%3127 = 6522916%3127 = 3121,电子邮件:0b0011
  • R:(680 * 3121)%3127 = 2122280%3127 = 2174,基数:(3121 * 3121)%3127 = 9740641%3127 = 36,e:0b0001
  • R:(2174 * 36)%3127 = 78264%3127 = 89,基数:(36 * 36)%3127 = 1296%3127 = 1296,e:0b0000
  • R:89
相关问题