我希望为我正在维护的运行 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/