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中,列出几种常见打包工具并写相应解压缩参数。
在Linux中,列出几种常见打包工具并写相应解压缩参数。
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
777 13
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
3869 12
|
Ubuntu Linux PHP
利用PHP压缩音频:Linux环境下的ffmpeg简易安装指南
希望这个指南能为你的编程之旅提供帮助。只需记住,每一行代码都像音乐的音符,组合在一起,创造出美妙的旋律。祝你编程愉快!
474 6
|
Linux
Linux压缩与解压“助手”
gzip压缩解压 因为都是系统自带的我们不需要安装; ls 看一下目录当前的文件,创建一个 touch 123.txt 文件; 原文件消失,压缩解压 gzip 进行压缩,(“ gzip 123.txt ”),这样就压缩完毕了; gzip 进行解压,(“ gzip -d 123.txt.gz”),这样就解压完毕了; 原文件保留,gzip -k 123.txt、gzip -dk 123.txt.gz ;
393 9
|
算法 Linux 数据安全/隐私保护
“Linux压缩大师”:gzip、bzip2、tar与zip
在Linux系统管理中,文件压缩与解压至关重要,能有效减少存储空间占用并加快文件传输。常用工具包括gzip、bzip2、tar和zip。gzip采用Lempel-Ziv算法,压缩率高且速度快,适用于单个文件压缩,扩展名为.gz。bzip2压缩率更高但速度稍慢,同样用于单个文件,扩展名为.bz2。tar主要用于打包文件而不直接压缩,常与gzip或bzip2结合使用实现压缩打包。zip则是一种通用压缩工具,支持多文件压缩及密码保护,兼容性好。这些工具让Linux环境下的文件管理更加高效便捷。
1037 1
|
存储 算法 Linux
在Linux中,如何理解加密工具?如GnuPG和OpenSSL。
在Linux中,如何理解加密工具?如GnuPG和OpenSSL。
|
存储 Linux Windows
Linux zip命令:压缩文件或目录
我们经常会在 Windows 系统上使用 “.zip”格式压缩文件,其实“.zip”格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,是一种相当简单的分别压缩每个文件的存储格式,本节要讲的 zip 命令,类似于 Windows 系统中的 winzip 压缩程序,其基本格式如下: [root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表 注意,zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。 下面给大家举几个例子。 【例 1】zip 命令的基本使用。 [r
786 0
Linux zip命令:压缩文件或目录
|
存储 安全 Linux
Linux存储安全:数据加密的实践与策略
【8月更文挑战第19天】数据加密是Linux存储安全的基石之一。通过使用LUKS进行磁盘加密和使用GnuPG进行文件加密,可以显著提高数据的安全性。
744 0
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密