Linux基於tar與openssl加密解密壓縮包
跨公網傳輸備份檔案是運維和DBA們經常乾的活,但是未經加密的壓縮檔案在公網上傳輸,就好比在亞龍灣裸泳,稍不留神就被拍啊,哈哈!本文主要描述通過openssl結合gzip與tar命令來實現加密,再傳輸那就安心多了。
一、OpenSSL
OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。openssl可以實現:祕鑰證書管理、對稱加密和非對稱加密。整個軟體包大概可以分成三個主要的功能部分:SSL協議庫、應用程式以及密碼演算法庫。
在本文中,我們僅僅使用其對稱加密方式。
對稱加密需要使用的標準命令為 enc ,用法如下:
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64]
[-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md]
[-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]
常用選項有:
-in filename:指定要加密的檔案存放路徑
-out filename:指定加密後的檔案存放路徑
-salt:自動插入一個隨機數作為檔案內容加密,預設選項
-e:可以指明一種加密演算法,若不指的話將使用預設加密演算法
-d:解密,解密時也可以指定演算法,若不指定則使用預設演算法,但一定要與加密時的演算法一致
-a/-base64:使用-base64位編碼格式
示例:
# more /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
# echo "This is a test file">>samp.txt
# openssl enc -e -des3 -a -salt -in samp.txt -out samp.code
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
# more samp.code
U2FsdGVkX19modQGUDk7yCxiOes+cUJVduNeSlwVFMCAA6J2gVVL9Q==
# openssl enc -d -des3 -a -salt -in samp.code -out samp.decode
enter des-ede3-cbc decryption password:
# more samp.decode
This is a test file
二、基於重定向加密tar壓縮檔案
1、加密
在下面的演示中,tar壓縮/u02/mysqlbak目錄下所有檔案,然後通過重定向的方式傳遞給openssl加密
在加密完成後通過重定向的方式傳遞給dd命令進行輸出
[root@node249 ~]# ls -hltr /u02/mysqlbak/
total 3.6G
-rw-r--r-- 1 root root 3.6G Apr 4 10:09 alldb_201804041001.sql
-rw-r--r-- 1 root root 2.9K Apr 28 11:32 grants.sql
drwxr-xr-x 2 root root 25 Apr 28 11:33 201804
[root@node249 ~]# tar -czPf - /u02/mysqlbak |openssl enc -e -des3 -a -salt -k PassW@rd | dd of=mysqlbak.tar.gz.desc
1353916+1 records in ### Author : Leshami
1353916+1 records out ### Blog : https://blog.csdn.net/leshami
693205362 bytes (693 MB) copied, 59.6633 s, 11.6 MB/s
[root@node249 ~]# head mysqlbak.tar.gz.desc
U2FsdGVkX18LxuJy6XZp+u42acigrJuJk9I432hUCiZib8pCV+MOjGetFyfnurOh
mvvEvJ/SftyzPxTZWYYObLV8ZsRJXCSgMmcOHBQWhtrRAc80F88J36Pg3GLa9uhx
dhz94ZVdhgEdyKe3r2MhBvqssVHlfrW/LTZfPzfGfqnkbNnvtRojF2f0hllhNI7w
AucUI2Nd5XLUX5aSZ2PnFWo3VSsBw5LmKPmFKiqw95tMU0xTYD1BCfViqztA3IvN
iYDh1Gd+hxg1W3k0YKh1fMRIzRlKM+5Gkbb25SI/Cmwk8M+QRChmz39cuQaOoRh6
ILWvN8DsiH6dTkgiERRfppyj7/2xl0DCNeUXc34bX51qpwtnsopxRy/GKSvU9BQZ
zBdV22nf1Q0uLIkqMx22CyVeZWIvbTlyZ70ObiRmxciMP7l2H45svGvdz/Z8Ii+G
xvomS62WhTQkbM4aDOOHfVnDrI/mQAZHci5yASLETD0SaU1Fh3j+M0mq97Wz0hjA
H0gWakoy6VpsQHdp5UVRWEvnKLI5LN5MCJ/UJQXj7Dchh9YxldMVr1H4WT/kQ7iv
A0eO5PufitWAGyqnlCRHUh1iR2LxVM+taMYnAo2qPlm0X9QtC56N3UAkajrFpeEI
2、解密
在下面的演示中,先使用dd 命令輸入檔案,然後通過管道符傳遞給openssl進行解密
最後通過管道符傳輸給tar命令進行解壓
[root@node249 ~]# rm -rf /u02/mysqlbak/*
[root@node249 ~]#
[root@node249 ~]# dd if=mysqlbak.tar.gz.desc |openssl enc -d -des3 -a -salt -d -k PassW@rd | tar -zxPf -
1353919+1 records in
1353919+1 records out
693206857 bytes (693 MB) copied, 24.7343 s, 28.0 MB/s
[root@node249 ~]# ls -hltr /u02/mysqlbak
total 3.6G
-rw-r--r-- 1 root root 3.6G Apr 4 10:09 alldb_201804041001.sql
-rw-r--r-- 1 root root 2.9K Apr 28 11:32 grants.sql
drwxr-xr-x 2 root root 25 Apr 28 11:33 201804
說明,如果不想覆蓋原有檔案,tar命令解壓時去掉P引數
相關文章
- Linux tar分卷壓縮與解壓縮Linux
- Linux tar壓縮和解壓縮等命令Linux
- 加密的壓縮包加密
- Linux命令:XZ解壓tar.xz字尾的壓縮包Linux
- Linux 常用基本命令 壓縮 解壓縮 tarLinux
- Linux下實現 OpenSSL 簡單加密與解密字串Linux加密解密字串
- Linux命令 tar 打包解壓縮Linux
- Linux下的tar壓縮解壓縮命令詳解Linux
- tar 分卷壓縮&解壓縮命令
- 壓縮解壓命令(tar, zip)
- tar的打包-壓縮與解壓縮,並解壓到指定的目錄
- Linux tar 打包 gz bz xz zip 壓縮Linux
- Linux下tar,jar壓縮,解壓常用命令LinuxJAR
- 壓縮命令tar詳解
- Linux下壓縮,解壓縮RAR包(轉)Linux
- linux中常見的打包壓縮命令——tar、jarLinuxJAR
- php如何openssl_encrypt加密解密PHP加密解密
- Ubuntu解壓縮zip,tar,tar.gz,tar.bz2Ubuntu
- 常用的解壓縮命令 tar
- Linux下*.tar.gz檔案解壓縮命令Linux
- C# 關於壓縮、加密、解壓問題C#加密
- 【Linux基礎】壓縮和解壓Linux
- linux下解壓縮jar包LinuxJAR
- Linux命令:壓縮指令(compress,uncompress,gzip,gunzip,tar)Linux
- linux的tar命令詳情;linux多個檔案壓縮打包到一個壓縮檔案Linux
- linux打包與壓縮Linux
- AIX上解壓縮.tar.Z, .tar.gz, .zip及.tgzAI
- Linux下常用壓縮格式的壓縮與解壓方法Linux
- tar.gz壓縮命令使用方法
- Linux加密壓縮檔案/資料夾Linux加密
- Linux系統裡的加密壓縮方式Linux加密
- linux壓縮解壓縮Linux
- Linux 常用的壓縮與解壓縮命令詳解Linux
- 檔案的壓縮與解壓縮zz--linuxLinux
- Linux精講——打包和壓縮tar、gzip、bzip2、xz、zipLinux
- Linux中Bin檔案壓縮包解壓執行Linux
- Linux各種壓縮與解壓方法Linux
- Linux下常用壓縮格式的壓縮與解壓方法---轉載Linux