linux - openssl/RSA - 使用公钥解密

标签 linux openssl rsa

我希望为我正在维护的运行 Linux 的小型设备确保软件更新过程的安全。我想生成更新包内容的 md5sum,然后在将其发送给客户之前使用私钥加密该散列。当他们加载更新时,设备应该解密哈希、验证它,然后继续安装包。

我正在尝试使用 OpenSSL 和 RSA 执行此操作。我找到了 this线程,并感到气馁。然后我找到了this线程并想知道 Perl 是如何绕过这一切所谓的不可能的。我在 C 中执行此操作,所以也许 SSL 库中某处有一个并行函数?

所以我的问题实际上是:我可以强制命令行 Linux 将公钥作为解密输入,或者使用 C 来规避该限制吗?

在此先感谢大家。

最佳答案

假设您已经使用 openssl genrsa 生成了 RSA 公钥和私钥:

$ openssl genrsa -out mykey
Generating RSA private key, 512 bit long modulus
...++++++++++++
..........++++++++++++
e is 65537 (0x10001)
$ openssl rsa -in mykey -pubout -out mykey.pub
writing RSA key

您可以像这样用私钥签署一些东西:

$ md5sum myfile | openssl rsautl -inkey mykey -sign > checksum.signed

您可以使用公钥验证此数据:

$ openssl rsautl -inkey mykey.pub -pubin -in checksum.signed
df713741d8e92b15977ccd6e019730a5  myfile

这是您要找的吗?

关于linux - openssl/RSA - 使用公钥解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327517/

相关文章:

java - 模数未返回非负输入的正确值

linux - 在另一个环境中解析环境

linux - 使用管道将输入传递给 passwd

Linux:无法获取包含空格的用户主目录

ubuntu - CURL 返回 (35) OpenSSL SSL_connect : SSL_ERROR_SYSCALL

apache - Ubuntu 10.04 为 apache 更新 openssl

c# - 如何使用私钥使用 rsa-sha256 对字符串进行签名?

java - 解密从 IDP 发送的断言时出错

Android systrace 或 atrace python parser 解析结果

ruby-on-rails - 调用服务器到服务器 CloudKit Web 服务时出现授权错误