2015-10-19 60 views
0

我正在使用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有相同的问题发表评论,但建议的解决方案没有奏效。

+0

难道它就像一个坏的表单说明符一样简单吗?选项是SMIME,PEM和DER。 – msw

+0

@msw结果与替换的形式如下。 'PEM':截断输出; 'DER':空输出; 'SMIME':截断输出;完全没有'outform':truncate输出。 –

+0

Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[信息安全堆栈交换](http://security.stackexchange.com/)会是一个更好的问题。 – jww

回答

1

得到通过分割大文件分成小块来解决这个问题:

# 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 

解决方案基于:

  1. http://linuxconfig.org/easy-way-to-encrypt-and-decrypt-large-files-using-openssl-and-linux
  2. https://unix.stackexchange.com/questions/1588/break-a-large-file-into-smaller-pieces#1589