使用公钥加密大文件
问题描述:
我正在使用smime
命令处理一个shell脚本,该脚本使用公钥加密某些文件(打算使用私钥解密)。使用公钥加密大文件
smime
适用于小文件,但不适用于较大(> 4GB)的文件。
openssl smime -aes-256-cbc -encrypt -in INPUT_FILE_NAME -binary -outform DEM -out OUTPUT_FILE_NAME PUBLIC_PEM_FILE
该行显示没有错误,并且输出文件已创建,但在调用完成其执行后仍然为空。
如何加密小文件和大文件?
编辑1:上找到how to encrypt a large file in openssl using public key有相同的问题发表评论,但建议的解决方案没有奏效。
答
得到通过分割大文件分成小块来解决这个问题:
# Splits large file into 500MB pieces
split -b 500M -d -a 4 INPUT_FILE_NAME input.part.
# Encrypts each piece
find -maxdepth 1 -type f -name 'input.part.*' | sort | xargs -I % openssl smime -encrypt -binary -aes-256-cbc -in % -out %.enc -outform DER PUBLIC_PEM_FILE
有关的信息的缘故,这里是如何解密,并把所有的拼在一起:
# Decrypts each piece
find -maxdepth 1 -type f -name 'input.part.*.enc' | sort | xargs -I % openssl smime -decrypt -in % -binary -inform DEM -inkey PRIVATE_PEM_FILE -out %.dec
# Puts all together again
find -maxdepth 1 -type f -name 'input.part.*.dec' | sort | xargs cat > RESTORED_FILE_NAME
解决方案基于:
难道它就像一个坏的表单说明符一样简单吗?选项是SMIME,PEM和DER。 – msw
@msw结果与替换的形式如下。 'PEM':截断输出; 'DER':空输出; 'SMIME':截断输出;完全没有'outform':truncate输出。 –
Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://*.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[信息安全堆栈交换](http://security.stackexchange.com/)会是一个更好的问题。 – jww