【问题标题】:How to decrypt an RSA encryption?如何解密 RSA 加密?
【发布时间】:2019-11-08 00:29:07
【问题描述】:

我收到了这个问题:

“使用 RSA 解密此消息:072 062 120 129(提示您需要将最终答案从 ASCII 转换为纯文本。 用于加密消息的公钥是 (n, e) = (143, 7)。”

我不知道如何解密它,这是我们得到的唯一信息。但是,我确实知道 p 和 q 是 13 和 11,这可以通过找到 2 个相乘得到 n 的素数得到。

有人知道如何解密吗?

在此先感谢,这有点让人不知所措。

【问题讨论】:

    标签: encryption rsa


    【解决方案1】:

    您可以使用wikipedia article 作为指导。


    从 p 和 q 你可以计算出 λ(n):

    λ(n) = lcm(p-1, q-1) = lcm(12, 10) = 60


    一旦知道了 λ(n),就可以用它来计算 d,即 e 模 λ(n) 的乘法逆元:

    d = e⁻¹ (mod λ(n))

    这实质上意味着找到一个自然数 d,使得 d*e = 1 (mod 60)。

    以下 Python 代码的 sn-p 可以做到这一点:

    d = next(d for d in range(60) if d*7 % 60 == 1)
    

    d 的值为 43。


    一旦我们有了 d,我们就可以用它来解密消息的各个数字:

    decrypted_ascii = [(x**d) % 143 for x in [72, 62, 120, 129]]
    decrypted_text = ''.join(chr(x) for x in decrypted_ascii)
    

    解密后的文本是Text

    【讨论】:

    • 您的模逆在教育意义上非常糟糕,而且效果不佳。请参阅answer,了解如何使用 EXT-GCD 计算它。此外,这显然是家庭作业,您正在提供完整的答案!
    • 我的模逆计算非常适合教学目的。如果我使用了您提供的那个,那么在阅读我的答案后,OP 可能会比他提出问题时更加困惑。至于这是否是作业——我无意解决作业以使 OP 不必这样做;相反,我想帮助 OP 了解 RSA 算法的工作原理。如果您愿意,请随时标记我的答案。
    • +1,这是学习基础知识的绝佳答案。家庭作业问题的 stackoverflow 规则略有细微差别:我们很乐意提供帮助,但我们希望看到提问者在问题主体中展示一些的努力。没有附加信息的家庭作业转储应该关闭,因为“需要更多关注”或类似的东西。当然不是每个人都相信这一点。也许随着时间的推移,你自己会接受这种观点。无论哪种方式,感谢您的贡献。
    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2012-11-27
    相关资源
    最近更新 更多