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命令:XZ解壓tar.xz字尾的壓縮包Linux
- Linux下的tar壓縮解壓縮命令詳解Linux
- Linux下實現 OpenSSL 簡單加密與解密字串Linux加密解密字串
- 加密的壓縮包加密
- Linux tar 打包 gz bz xz zip 壓縮Linux
- linux中常見的打包壓縮命令——tar、jarLinuxJAR
- 壓縮命令tar詳解
- php如何openssl_encrypt加密解密PHP加密解密
- 【Linux基礎】壓縮和解壓Linux
- C# 關於壓縮、加密、解壓問題C#加密
- Linux加密壓縮檔案/資料夾Linux加密
- tar.gz壓縮命令使用方法
- Linux 常用的壓縮與解壓縮命令詳解Linux
- 壓縮包格式有哪些?壓縮包格式大全
- Linux中Bin檔案壓縮包解壓執行Linux
- Linux下檔案的壓縮與解壓Linux
- linux 下壓縮與解壓資料夾Linux
- Linux壓縮解壓Linux
- Linux科研武器庫 - 檔案壓縮與解壓縮 - zip / unzipLinux
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- Mac壓縮檔案怎麼加密?BetterZip加密Word壓縮檔案教程Mac加密
- arj——用於建立和管理.arj壓縮包
- 基於 NSData 的圖片壓縮
- 使用Java API進行tar.gz檔案及資料夾壓縮解壓縮JavaAPI
- linux分卷壓縮解壓Linux
- Linux之壓縮Linux
- RSA加密與解密加密解密
- iOS端基於RSA公鑰加密和解密iOS加密解密
- 『學了就忘』Linux基礎命令 — 32、壓縮和解壓縮相關命令Linux
- Linux中檔案的壓縮和解壓縮Linux
- Golang 學習筆記(四)- archive/tar 實現打包壓縮及解壓Golang筆記Hive
- Linux基礎入門:⑥Linux常見壓縮工具及程式包安裝及管理方式Linux
- 20.1 OpenSSL 字元BASE64壓縮演算法字元演算法
- node ~ zip壓縮 && 檔案加密加密
- Linux打包壓縮解壓工具Linux
- 壓縮包明文攻擊