我如何用公钥加密一个大文件,以便只有拥有私钥的人才能解密它?

我可以使用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位大小的键,但运气不好,同样的错误

推荐答案

公钥加密不用于加密任意长的文件.一种是使用对称密码(比如AES)进行常规加密.每次生成、使用新的随机对称密钥,然后使用RSA密码(公钥)进行加密时.密文连同加密的对称密钥一起传送给收件人.收件人使用他的私钥解密对称密钥,然后使用对称密钥解密消息.

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

Linux相关问答推荐

为什么硬编码的阿拉伯字母与Unicode代码点不具有相同的值

如何在Linux上获取clang中的模板实例化统计?

shell中两个日期的天数差异

Docker 不保留 chown 用户设置

为什么 liburing 写入性能低于预期?

inotifywait 可以说文件在另一个进程可以访问之前已关闭吗?

为什么 printf 仍然可以使用低于 XMM 寄存器中 FP args 数量的 RAX?

如果 bash 中已经存在文件名,则创建新文件但添加数字

用于判断 shell 脚本是否正在运行的 Linux 命令

如何在 linux 'screen' 中搜索任何单词

KDE 桌面效果中的 OpenGL 和 XRender 有什么区别?

你如何在 C 中的 Linux 上进行非阻塞控制台 I/O?

为什么导入 SQL 这么慢?

错误:ld.so:无法预加载对象 LD_PRELOAD:忽略

GNU Octave 方法对矩阵中的每个项目进行操作.octave arrayfun(...)示例

命令行 Arduino 编译和上传?

如何使用 Linux 命令找到我的 shell 版本?

在 Linux 中的特定行向文件添加文本

内联 if shell 脚本

如何通过命令行识别特定的 Linux 风格?