📜  如何解决RSA算法问题?

📅  最后修改于: 2021-09-27 14:35:21             🧑  作者: Mango

RSA 算法是一种非对称密码算法,也就是说,在进行通信时应该涉及到两个密钥,即公钥和私钥。解决 RSA 算法问题的步骤很简单。

示例 1:

  • 步骤 1:选择两个质数pq
    让我们来p = 3q = 11
  • 步骤 2:计算n\phi
    它给出为,

    n = p \times q\phi = (p-1) \times (q-1)

    在这个例子中,
    n = 3 \times 11 = 33
    \phi = (3-1) \times (11-1) = 2 \times 10 = 20

  • 第 3 步:找到的值e (公钥)
    选择e ,这样e应该是共同的。互质意味着它不应该乘以因子\phi也不除以\phi

    的因素\phi是, 20 = 5 \times 4 = 5 \times 2 \times 2所以e不应该乘以52并且不应除以 20。

    因此,素质是3,7,11,17,19 …,拍摄3和11所选择e作为 7

    所以, e = 7

  • 步骤 4:计算d (私钥)
    条件给出为,
    gcd(\phi, e) = \phi x +ey = 1其中 y 是d .

    计算值d ,

    1. 形成一个包含四列的表格,即 a、b、d 和 k。
    2. 初始化 a = 1, b = 0, d = \phi , k = – 在第一行。
    3. 初始化 a = 0, b = 1, d = e , k = \frac{\phi}{e}在第二行。
    4. 从下一行,应用以下公式找到下一个 a、b、d 和 k 的值,其给出为
      • a_{i} = a_{i-2} - (a_{i-1} \times k_{i-1})
      • b_{i} = b_{i-2} - (b_{i-1} \times k_{i-1})
      • d_{i} = d_{i-2} - (d_{i-1} \times k_{i-1})
      • k_{i} = \frac{d_{i-1}}{d_{i}}

    立刻, d = 1 , 停止进程并检查以下情况

    如果b > \phib = b \mod \phi如果b < 0b = b + \phi

    对于给定的示例,该表将是,

    a b d k
    1 0 20
    0 1 7 2
    1 -2 6 1
    -1 3 1

    如上表d = 1 , 停止进程并检查给定的条件b
    \therefore b = 3

    为了验证b是正确的,上面的条件应该满足,即
    gcd(\phi, e) = \phi x + ey = (20 \times -1) + (7 \times 3) = 1 .因此d是正确的。

  • 第 5 步:进行加密和解密
    加密给出为,
    c = t^{e}\mod n
    解密给出为,
    t = c^{d}\mod n

    对于给定的例子,假设t = 2 , 所以
    加密是c = 2^{7}\mod 33 = 29

    解密是t = 29^{3}\mod 33 = 2

    因此在决赛中, p = 3 , q = 11 , \phi = 20 , n = 33 , e = 7d = 3

示例 2:GATE CS-2017(组 1)
在 RSA 密码系统中,特定的 A 使用两个质数 p = 13 和 q = 17 来生成她的公钥和私钥。如果A的公钥是35,那么A的私钥是?

  1. p = 13q = 17
  2. 计算n = 13 \times 17 = 221\phi = (13-1) \times (17-1) = 12 \times 16 = 192
  3. e = 35 (公钥)
  4. 计算d (私钥)
    a b d k
    1 0 192
    0 1 35 5
    1 -5 17 2
    -2 11 1

    \therefore d = 11 (私钥)