2015-10-19 57 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