首先說下實現方法:使用Linux的openssl命令進行二進制文件的加密解密,使用管道命令進行文件的加密解密操作
一、普通文件加密/解密
【加密】
cat a.txt | openssl des3 -e -k password > a1
其中a.txt可以為任何二進制文件、password為密碼、a1為加密后的文件
原理:使用cat命令讀取文件內容使用管道命令將文件內容輸出到openssl命令,加密完成使用>操作符將加密后的結果輸出到文件a1
【解密】
cat a1 | openssl des3 -d -k password > a2
其中a1為加密后的文件、password為密碼、a2為解密后的文件
原理與加密相同
openssl參數:
des3 加密方式(可根據需要更換)
-e 表示需要加密
-d 表示需要解密
-k 表示密鑰(即密碼)
二、壓縮文件加密/解密
亮點:使用管道符實現數據內存交互,無需打包后再將打包后的文件加密
【壓縮並加密】
tar zcvf - file1 file2 | openssl des3 -e -k password > a1
其中file1、file2指添加進壓縮包的文件,可以多個,可以為文件夾;password為密碼,a1為加密后的文件
原理:使用tar命令打包文件( - 參數指輸出到管道)將打包后的數據輸出到openssl命令加密完成使用>操作符將加密后的結果輸出到文件a1
【解密並解壓】
cat a1 | openssl des3 -d -k password | tar zxvf -
其中a1為加密后的文件,password為密碼
原理:使用 cat命令讀取加密后的文件內容並且輸出到openss命令,解密完成得到壓縮包數據再通過管道符將數據傳遞到tar命令進行解壓
tar命令的“-”參數指從管道讀取數據進行解壓而非文件
不得不感慨Linux管道命令之強大,可以將各種命令通過管道組合成復雜的功能,強大而高效