通过在 RSA 中分解 n 或不分解 n 来解密消息

Decrypt the message by factoring n or without factoring n in RSA

RSA 密码系统具有 public 密钥 n = 18721 和 e = 25。消息被加密,一次加密一个字母,通过 A = 2,B = 3 c _ 27 将字母转换为数字。Oscar 拦截Alice 给 Bob 的消息“365, 18242, 4845, 18242, 17173, 16;134:”。

(la) 通过分解 n 来解密消息。

(lb) 假设你不能对 n 进行因式分解,解密消息。

任何人都可以一步一步地教我如何解密消息以及什么是 p&q

您的问题可以通过阅读 RSA 上的维基百科 page 得到解答。

1a

当你因式分解 n 时,你会发现整数 pq 使得 n = p * q。您计算 Y = (p - 1)(q - 1)。然后可以找到私钥指数d,计算为d = 1/e mod Y.

要解密截获消息中的值c之一,只需计算m = c^d mod n,其中 m 是解密的消息。这是有效的,因为 (m^e)^d mod n 等于 1.

我会把实际的计算留给你。如果您遇到困难,wiki 页面上有一些很好的示例。

1b

如果无法分解 n,则无法解密邮件。如果仅使用 public 密钥 (n,e) 就可以解密消息,那么为什么会有人使用 RSA?

对于 1b 方法,短语 Rainbow Table 可能会有所启发(尽管有意 over-specific/misleading)。

非常有趣。我会告诉你,你的第 2 个和第 4 个字母是 'E';而且我很确定你打错了最后一个值 (134)。它是 1375(这对我来说最有意义)或 13444(最接近的字符串匹配,也有点意义)。

@bkjvbx 的答案在 RSA 的情况下是正确的,因为它在野外使用;但是由于这个(大概)家庭作业是在范围非常大的输入上使用原始 RSA,所以这是一个完全不同的野兽。

1a. 被点赞的答案正确回答

1b. 知道每个消息块只有 1 个字符 Oscar 可以用相同的 e 和 n 加密字母表中的每个字符并比较它们。

a = 2^25 mod 18721 = 6400

b = 3^25 mod 18721 = 18718

c = 4^25 mod 18721 = 17173 ...

对于超过一个字符的加密,赞成的答案是正确的,但当每个字符都被单独加密时就不是这样了。