linux - 如何使用公钥加密openssl中的大文件

标签 linux openssl

我怎样才能用公钥加密一个大文件,这样只有拥有私钥的人才能解密它?

我可以制作 RSA 公钥和私钥,但在使用此命令加密大文件时:

openssl rsautl -encrypt -pubin -inkey public.pem -in myLargeFile.xml -out myLargeFile_encrypted.xml

以及我如何也可以执行解密....

我通过以下命令创建我的私钥和公钥

openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout

我收到此错误:

RSA operation error
3020:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:.\crypto\rsa\rsa_pk1.c:151:

我尝试制作大小从 1024 到 1200 位的 key ,但没有运气,同样的错误

最佳答案

公钥加密不适用于加密任意长的文件。一个使用对称密码(比如 AES)进行正常加密。每次生成、使用一个新的随机对称 key ,然后使用 RSA 密码(公钥)进行加密。密文与加密的对称 key 一起被传送给接收者。接收方使用自己的私钥解密对称 key ,然后使用对称 key 解密消息。

私钥永远不会共享,只有公钥用于加密随机对称密码。

关于linux - 如何使用公钥加密openssl中的大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7143514/

相关文章:

c - c中的openssl aes_128_ctr

android - 如何在 ANDROID 应用程序中使用 openSSL 库

linux -/etc/cron.weekly 中的 PHP 脚本

c - 找到未使用的结构和结构成员

linux - node.js:找不到模块 'request'

linux - DIR ="$( cd "$( dirname "${BASH_SOURCE[0]}")"&& pwd )"它是如何工作的?

encryption - 如何识别和删除 CipherSuite 中的 CBC 密码?

c - iptables netfilter 队列 nfq_set_verdict_mark (nfq_set_verdict2) 似乎没有应用标记

c# - 椭圆曲线 Diffie Hellman 公钥大小

ssl - 无法在我的应用程序中使用自签名证书,但可以与 s_client 一起使用