博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 基于tar与openssl加密解密压缩包
阅读量:6642 次
发布时间:2019-06-25

本文共 3097 字,大约阅读时间需要 10 分钟。

跨公网传输备份文件是运维和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 versionOpenSSL 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.codeenter 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.decodeenter 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.sqldrwxr-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.desc1353916+1 records in      ### Author : Leshami1353916+1 records out   ### Blog : https://blog.csdn.net/leshami693205362 bytes (693 MB) copied, 59.6633 s, 11.6 MB/s[root@node249 ~]# head mysqlbak.tar.gz.desc U2FsdGVkX18LxuJy6XZp+u42acigrJuJk9I432hUCiZib8pCV+MOjGetFyfnurOhmvvEvJ/SftyzPxTZWYYObLV8ZsRJXCSgMmcOHBQWhtrRAc80F88J36Pg3GLa9uhxdhz94ZVdhgEdyKe3r2MhBvqssVHlfrW/LTZfPzfGfqnkbNnvtRojF2f0hllhNI7wAucUI2Nd5XLUX5aSZ2PnFWo3VSsBw5LmKPmFKiqw95tMU0xTYD1BCfViqztA3IvNiYDh1Gd+hxg1W3k0YKh1fMRIzRlKM+5Gkbb25SI/Cmwk8M+QRChmz39cuQaOoRh6ILWvN8DsiH6dTkgiERRfppyj7/2xl0DCNeUXc34bX51qpwtnsopxRy/GKSvU9BQZzBdV22nf1Q0uLIkqMx22CyVeZWIvbTlyZ70ObiRmxciMP7l2H45svGvdz/Z8Ii+GxvomS62WhTQkbM4aDOOHfVnDrI/mQAZHci5yASLETD0SaU1Fh3j+M0mq97Wz0hjAH0gWakoy6VpsQHdp5UVRWEvnKLI5LN5MCJ/UJQXj7Dchh9YxldMVr1H4WT/kQ7ivA0eO5PufitWAGyqnlCRHUh1iR2LxVM+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 in1353919+1 records out693206857 bytes (693 MB) copied, 24.7343 s, 28.0 MB/s[root@node249 ~]# ls -hltr /u02/mysqlbaktotal 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.sqldrwxr-xr-x 2 root root  25 Apr 28 11:33 201804说明,如果不想覆盖原有文件,tar命令解压时去掉P参数
你可能感兴趣的文章
js 异步请求封装
查看>>
C# 中的"yield"使用
查看>>
BIO、NIO、AIO
查看>>
ServerSocketChannel简述
查看>>
怎么旋转PDF文件的方向并保存成功
查看>>
关于C++ error PRJ0003 : Error spawning 'rc.exe'.
查看>>
NOIP2008普及组题解
查看>>
《软件技术基础》实验指导 实验三
查看>>
抓包工具Charles
查看>>
数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件...
查看>>
oracle索引组织表,簇表
查看>>
XSLT之路2---脚本使用
查看>>
2014.12.5 ios实现相册多选操作
查看>>
Expect自动化交互程序
查看>>
jenkins-参数化构建(二)插件:Extended Choice Parameter
查看>>
前端开发规范
查看>>
(SPOJ687,后缀数组)
查看>>
30岁前不要去在乎的29件事
查看>>
数据调用方法
查看>>
在Hadoop中ResourceManager是干什么的?
查看>>