【发布时间】:2013-01-14 21:58:43
【问题描述】:
我正在为我正在维护的运行 Linux 的小型设备确保软件更新过程的安全。我想生成更新包内容的 md5sum,然后用私钥加密该散列,然后再将其发送给客户。当他们加载更新时,设备应该解密哈希,验证它,然后继续安装包。
我正在尝试使用 OpenSSL 和 RSA 来做到这一点。我找到了this 线程,很沮丧。然后我找到了this 线程,想知道 Perl 是如何解决所谓的不可能的问题的。我在 C 语言中执行此操作,所以 SSL 库中的某个地方可能有一个并行函数?
所以我的问题真的是:我可以强制命令行 Linux 将公钥作为解密输入,还是使用 C 来规避这个限制?
提前谢谢大家。
【问题讨论】:
-
旁注:您使用公钥加密并使用私钥密钥解密。您还可以使用私钥(对于 RSA,与解密相同)签名并使用公钥(对于 RSA,与加密相同)进行验证。
-
谢谢。您的评论有助于澄清答案。此外,当我在答案(签名和验证)中运行命令时,签名的输出看起来是加密的,而验证的输出是纯文本。不幸的是,我不明白你所说的如何运作。为什么解密(签名)看起来像乱码,而加密(验证)看起来干净?
-
RSA 加密和解密是相反的。它们可以按任何顺序运行。因此,对于消息,
M、Encrypt(Decrypt(M)) == M和Decrypt(Encrypt(M)) == M。 -
哦,当然。所以我认为 RSA 中的词汇选择实际上更多的是指示哪些密钥用于什么,而不是指示输出的外观。再次感谢。