201402061515對個別檔案作壓縮、加密 - 使用 7ZIP 跟 openssl

 如果你跟我一樣,系統會不斷的產生一堆記錄檔(Log),除了本地的備份外,還需要複製到異地端,這時候你應該會對檔案進行「壓縮」+「加密」的動作,之前在「Tar 備份後 FTP 自動上傳」談過 tar gzip 壓縮的方式,今天要來談怎麼自動對檔案作加密。

tar 指令可以將多個檔案或目錄打包起來, 7ZIP 也可以。但我想要做的是針對個別檔案,一個一個去做壓縮跟加密的動作,因為記錄檔彼此是獨立無關的,而且隨著時間增加,所以不會需要整個打成一大包。 

-- 在 Windows 端 ---

底下這段是寫在批次檔 (batch file),目的是針對某目錄下所有的 *.log 檔案作個別的壓縮跟加密

 

set files="*.log"
for  %%i  in  (%files%) do  "C:\Program Files\7-Zip\7z.exe"  a  %%i.7z  -ppasswd  %%i

 

當中的「-ppasswd」,-p 是參數,意思是設定要用密碼加密,而 passwd 就是指定的密碼(這~當然要換成你自己的密碼),而 -p 跟密碼之間是不能有空格的。

而「%%i.7z」是產出的檔案,為原本檔名再加上 .7z 的副檔名,用以辨別是用 7zip 做壓縮。

 

-- 在 UNIX 端 ---

底下這段是利用 openssl 來針對檔案作加密、解密

這個方法是  檔案s (舉例 index*) -> tar 打包 -> gzip 壓縮 -> openssl 利用  aes-256-cbc 的方式加密

解開則是反過來的順序。

-k 指定加密密碼,密碼舉例為 123456

 

加密:

tar cf - index* | gzip -c | openssl aes-256-cbc -e  -out index.aes -k 123456

解密:

openssl aes-256-cbc -d -in index.aes -k 123456 | gzip -d | tar xvf -

 

 

openssl 提供了非常多種的加解密方式,使用方式可以用 openssl /? 觀看

Cipher commands (see the `enc' command for more details)
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb base64 bf
bf-cbc bf-cfb bf-ecb bf-ofb
camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
camellia-256-cbc camellia-256-ecb cast cast-cbc
cast5-cbc cast5-cfb cast5-ecb cast5-ofb
des des-cbc des-cfb des-ecb
des-ede des-ede-cbc des-ede-cfb des-ede-ofb
des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx rc2
rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb
rc2-ecb rc2-ofb rc4 rc4-40
seed seed-cbc seed-cfb seed-ecb
seed-ofb zlib

 

針對 openssl 的使用,各位可以參考「http://www.openfoundry.org/tw/resourcecatalog/Security/Data-Encryption/openssl

-- 在 7zip 如何進行加密,並隱藏目錄及檔案結構 hide file names --- 20150618

格式:7z -p[password]  -mhe=on  a [產出的 7zip 檔名]    [要壓縮機密的檔案]   
例如:針對 c:\temp 目錄下壓縮加密,以 -mhe=on 保護目錄結構(沒對的密碼不能看裡頭有什麼檔案或目錄),並設定保護密碼 AAA ,然後產出壓縮檔在 d:\temp\m3.7z
7z  -pAAA  -mhe=on  a  d:\temp\m3.7z  c:\temp

~End

回應
Google Search
Google
累積 | 今日
loading......
平均分數:0 顆星
投票人數:0
我要評分:
Google