You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenSSL RSA密钥对加密10MB-20MB大文件时遭遇数据超出密钥大小错误的解决方案咨询

使用OpenSSL RSA密钥对加密10MB-20MB大文件时遭遇数据超出密钥大小错误的解决方案咨询

嗨,这个问题我之前也踩过坑,其实是对RSA的使用场景理解有点偏差啦~RSA本身的设计就不是用来直接加密大文件的,它的加密容量受限于密钥长度(比如2048位的RSA,用PKCS#1 padding的话最多只能加密245字节左右的数据),所以你直接加密10-20MB的文件肯定会报“数据太大”的错误。

正确的做法是采用混合加密方案:用对称加密(比如你熟悉的AES-256-CBC)来加密大文件,然后用RSA公钥加密这个对称密钥——这样既兼顾了对称加密的速度(适合大文件),又保留了RSA非对称加密的安全性(只有持有私钥的人能解密出对称密钥,进而解密文件)。

下面是具体的操作步骤:

加密流程

  • 第一步:生成一个随机的AES-256对称密钥

    openssl rand -out aes_key.bin 32
    

    这里生成32字节的随机数据,正好对应AES-256的密钥长度。

  • 第二步:用这个对称密钥加密你的大文件

    openssl enc -aes-256-cbc -salt -in file.txt -out encrypted_file.bin -pass file:aes_key.bin
    

    这个命令和你之前单独用AES加密的逻辑一致,只是把密码换成了从文件读取的随机密钥。

  • 第三步:用RSA公钥加密这个AES密钥

    openssl pkeyutl -encrypt -in aes_key.bin -out encrypted_aes_key.bin -inkey public.key -pubin
    

    现在这个encrypted_aes_key.bin就是只有你的RSA私钥能解密的密钥文件。

之后你只需要把encrypted_file.bin和encrypted_aes_key.bin发给接收方就行,对方用你的RSA私钥就能解密啦。

解密流程

  • 第一步:用RSA私钥解密出AES密钥

    openssl pkeyutl -decrypt -in encrypted_aes_key.bin -out aes_key_decrypted.bin -inkey private.key
    

    执行后会提示你输入私钥的密码(就是你生成private.key时设置的密码)。

  • 第二步:用解密后的AES密钥还原大文件

    openssl enc -d -aes-256-cbc -in encrypted_file.bin -out decrypted_file.txt -pass file:aes_key_decrypted.bin
    

这样就能完美解决大文件加密的问题啦,既安全又高效~

备注:内容来源于stack exchange,提问作者rahuls_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:12:58