【问题标题】:What does it mean to encrypt with a public key? [closed]用公钥加密是什么意思? [关闭]
【发布时间】:2015-04-27 18:51:23
【问题描述】:

我听过很多公钥理论,但我从来没有真正理解过如何加密可以用你没有的私钥解密的东西。

如何使用公钥加密消息,以便只有拥有与该密钥关联的相应私钥的人才能解密它?

【问题讨论】:

  • 看起来最好的副本是在另一个站点上:crypto.stackexchange.com/questions/292/…。这可能会作为本网站的主题关闭,因为它不是专门关于编程加密的。
  • 我投票决定将此问题作为离题结束,因为这与编程没有直接关系。像这样的问题更适合Cryptography。虽然可能存在重复。
  • @PatrickM 我发现答案和视频非常有帮助。也许您可以将其移至密码学部分。当我第一次开始这个问题时,我打算问如何在代码中实现这样的功能,但当我输入时,我意识到我真的只是想知道它是如何工作的。

标签: security cryptography public-key-encryption


【解决方案1】:

加密密钥以公共/私人对的形式出现。私有由所有者密切持有,但公共可以传递给需要加密某些东西以便将其发送给所有者的人。

已经被公钥加密的东西只能用私钥解密,因为它包含了加密/解密例程使用的更多细节。

虽然这可能无法提供您可能正在寻找的技术细节,但希望它有助于阐明键之间的关系。

【讨论】:

    【解决方案2】:

    Youtube 频道 Art of the Problem 的 video 很好地从概念上解释了它,然后再深入了解 RSA 算法如何实现它的确切细节。

    如果您将加密视为使用锁和钥匙来保护信息,那么标准的共享密钥加密涉及您和您的合作者都持有相同的密钥。当您发送消息时,您将收到您的消息,使用您的钥匙将其关在一个上锁的盒子中,然后将盒子发送给使用您拥有的密钥副本打开它的收件人。

    在公私密钥加密中,您不会提供密钥的副本;您将密钥保密。相反,您会给出有关如何建造只有您的钥匙才能打开的锁的说明。你把它交给任何要求它的人。他们负责建造锁并在将其发回给您之前使用它来保护他们的信息。如果他们操作正确,那么当您将私钥放入其中时,他们建造的锁就会完美打开。

    考虑加密步骤的另一种方式是,您实际上将锁的副本分发给想要向您发送消息的任何人。他们可以拿下这把锁,把它贴在他们的信息上,没有钥匙就没有人可以打开它来阅读内容——甚至是原始发件人!用物理锁来做这件事会非常昂贵,但用数字来做很容易。

    公私加密依赖于 One-way function(更准确地说,是一种称为 trapdoor function 的单向函数),这是一个易于计算的数学公式,但如果您只有输出。类似地,您的锁设计很容易从一组指令构建,但很难在没有看到适合锁的实际钥匙的情况下进行逆向工程。

    我也倾向于从打结的角度来考虑这部分。采取一系列步骤将绳子打结非常容易。即使知道你做了什么以及以什么顺序,有时也不可能颠倒步骤的顺序来解开结。要么你在某个地方放了一个滑套,要么你需要得到你的秘密解开钥匙来解开绳子。 (提示:解开绳结的秘诀是一把刀。完成后数数手指。)

    【讨论】:

      【解决方案3】:

      这样看:

      来自 B 的消息仅发送给 A。A 有钥匙(私钥)打开宝箱(公钥)并读取 信息。此时,A 可以回复消息并放置 将其放回宝箱(公钥)并重新交付给 B 人。B 人 现在可以使用他们的密钥(他们自己的私钥)来读取胸部(公钥)中的消息

      希望这个类比会有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-12-25
        • 2019-12-25
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 2014-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多