|
|
一、对文件进行加密/解密方法* C4 q( s/ i1 r2 l0 x. |- h% j0 P# l/ m
方法一:gzexe加密
K* q/ S7 C ~3 @这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。示例如下:
$ _* L# j0 L6 v6 h9 q5 @[root@ipsan-node03 ~]# echo "hahahaha" > a.txt) W8 p( P& P! {) Q; N6 F
[root@ipsan-node03 ~]# cat a.txt * J6 v$ {; c: F1 p; [& ?2 P
hahahaha2 P) l$ Q# H% h2 h ~
[root@ipsan-node03 ~]# ls a.txt
0 t6 Z- x% _6 g: Ka.txt- c% n6 I6 y }# _! v+ O8 X" t
[root@ipsan-node03 ~]# gzexe a.txt2 g/ j/ S" r0 H
a.txt: 22.2%
' d6 o# {# I* v4 f3 h5 B& w[root@ipsan-node03 ~]# ls1 m. B* {7 O! t
a.txt a.txt~ 5 P1 [5 I& Y5 j8 r9 }
gzexe方法会把原来没有加密的文件a.txt备份为a.txt~ ,同时a.txt文件变成了加密文件(即变成了密文)5 D6 b# D' ]0 @& L* V5 p) V, @
[root@ipsan-node03 ~]# cat a.txt 3 h/ v" J; G4 P4 U/ i
쏎; k7 R2 ^# ]. Q+ l1 r f3 W2 L% X
5 Q y" p$ X/ J6 ^9 B! [. L[root@ipsan-node03 ~]# cat a.txt~
/ r! a9 d: N5 T( j! lhahahaha
1 b9 X# _ m4 v% B' b3 @ W3 s通常使用gzexe加密后,会将备份文件(这里指a.txt~)删除
) Z3 E! N1 E" s1 [, y# N8 y[root@ipsan-node03 ~]# ls, b* R+ e8 j! G: I+ E7 ~
a.txt a.txt~ 4 n) x6 c$ w6 A1 |. c9 B2 H0 s
[root@ipsan-node03 ~]# rm -f a.txt~* d4 J+ C" v( s
[root@ipsan-node03 ~]# ls
# V V" K+ |# Y9 C% ta.txt) v7 G2 r# O4 ~' @- D; Y8 `7 m
使用-d参数进行解压操作
, m, _* L8 Y; M8 f, C& n7 J) F! b[root@ipsan-node03 ~]# gzexe --help
( R( n* o; z* Z0 @+ nUsage: /usr/bin/gzexe [OPTION] FILE...6 Q4 K J" O3 C
Rename each FILE with a compressed version of itself, renaming FILE to FILE~.
. t. S9 q/ S' v9 n& b -d Decompress each FILE instead of compressing it.1 x& i; w: U- I# Y( Q
--help display this help and exit& ?' B) W) x `
--version output version information and exit! t7 l! h- _0 Y T8 n; @9 _
Report bugs to <bug-gzip@gnu.org>.0 x4 L$ T# R. f4 }- h
解压之后的文件a.txt内容就会还原回来,同时也会将之前的加密文件变成a.txt~,同样,通常也会删除这个a.txt~的备份文件0 \$ y; q- r4 f! H U
[root@ipsan-node03 ~]# gzexe -d a.txt
; ~ m9 B' c: S0 J t5 n- G3 x[root@ipsan-node03 ~]# ls
2 u ^! | d& Z, N& Aa.txt a.txt~ - G8 a" s/ |. O8 {( F5 U
[root@ipsan-node03 ~]# cat a.txt9 b- j9 c+ C, y' J6 J
hahahaha
- V- V: a2 ]# V1 W% [
' X/ _4 h, @7 U* s0 F. l
+ N9 t2 Y* Y7 I4 \[root@ipsan-node03 ~]# rm -f a.txt~! a1 Y( i7 W( V/ R
[root@ipsan-node03 ~]# ls( G0 M: G! @& M4 R: H. H
a.txt4 P: f" J3 K4 X u
方法二:用tar命令 对文件加密压缩和解压
$ d# {% S+ j6 y1 g# M* z- T- Y. U i! o[root@ipsan-node03 ~]# ls
! W* q( o- C3 O" D9 C8 Ktest.txt: [, F0 s& Q% N
[root@ipsan-node03 ~]# cat test.txt& v7 v( y/ L8 R
hahahaha
_1 i! l0 A- D8 W: v r0 D5 d3 Lheiheihei
5 }- U$ h8 ]7 R1 m8 V. O; |& ^ ) ^2 k7 z, C) s" F s+ c
如下命令是对filename文件(test.txt)进行加密压缩,生成filename.des3加密压缩文件,123@123为加密的密码! W- p+ c9 i7 N8 l/ [
[root@ipsan-node03 ~]# tar -zcf - test.txt |openssl des3 -salt -k 123@123 | dd of=test.txt.des36 Z* A+ D! u) F c. y- C8 }! c
0+1 records in
' ~) L' ^4 j6 D: @0+1 records out
3 z5 Y* j8 z7 ~" ~, v4 n& k- v152 bytes (152 B) copied, 0.00333366 s, 45.6 kB/s
- N8 _+ [4 W8 x/ E0 e: _---------------------------------------------------------------------------------------------------------" a! n8 r# Q$ D
也可以将/mnt目录下的所有文件全部加密压缩8 `7 I! J+ f4 P- k8 I; H* [) ?
[root@ipsan-node03 ~]# tar -zcf - /mnt/* |openssl des3 -salt -k 123@123 | dd of=test.des3& g4 W3 f! G$ @. f4 F' J
或者根据匹配规则进行加密压缩: P: S3 j5 f+ f8 \* B) G
[root@ipsan-node03 ~]# tar -zcf - /mnt/pass_* |openssl des3 -salt -k 123@123 | dd of=test.des3
e# A8 e0 U. _0 M---------------------------------------------------------------------------------------------------------
+ \6 w8 o! Y" S% L0 J2 c
' s' G R: q( z9 D通常加密后,会将源文件删除' L& u0 x, \% e7 s
[root@ipsan-node03 ~]# ls
7 r Y) T \! t' r6 s4 @test.txt test.txt.des3
" c* e0 a. m# [: ^7 }3 f" Q[root@ipsan-node03 ~]# rm -f test.txt" ^) c% w' ]. ~. r! U1 I- w: u
[root@ipsan-node03 ~]# cat test.txt.des3
. w$ D) L; w7 }! Q l
: C. k. `/ V/ S5 V# K1 n解压操作:
# f9 q% A- Z2 e) Y& [- d3 C[root@ipsan-node03 ~]# dd if=test.txt.des3 |openssl des3 -d -k 123@123 | tar zxf -
2 ]1 R* |: U/ n g6 d/ E* `0+1 records in- s* n1 ]7 u* D) w* b' V# ~
0+1 records out6 A% r9 U! b& g
152 bytes (152 B) copied, 4.5873e-05 s, 3.3 MB/s. `9 p. P$ C0 F* e/ R+ \
1 I8 @9 [) K- l9 ~ y" A
[root@ipsan-node03 ~]# ls
- t! l( ]4 l, m% i7 l" jtest.txt test.txt.des3
6 J% Y7 ^ s' |8 s9 ~[root@ipsan-node03 ~]# cat test.txt
$ O3 r& r" }2 L9 J; Nhahahaha
! |, U/ F8 X* lheiheihei; B. \" V4 f) O" ]1 w& Q* P! O$ d
+ d1 i5 t5 p9 R; z5 u
注意命令最后面的"-",它将释放所有文件,
+ [8 g, B7 O% W-k 123@123可以没有,没有时在解压时会提示输入密码
# o% \6 l9 ?! Q% b0 ]方法三:结合Tar和OpenSSL给文件和目录加密及解密$ U+ |( A; A/ O7 T) v( o2 F
当有重要的敏感数据的时候,给文件和目录额外加一层保护是至关重要的,特别是当需要通过网络与他人传输数据的时候。基于这个原因,
. d8 g6 F8 M) b; }1 ~7 O+ C" I可以用到tar(Linux 的一个压缩打包工具)和OpenSSL来解决的方案。借助这两个工具,你真的可以毫不费力地创建和加密 tar 归档文件。
4 w, Y( g" P# e7 s2 Y) J下面介绍使用 OpenSSL创建和加密 tar 或 gz(gzip,另一种压缩文件)归档文件:8 L0 Q: F& Q) Z `) {
牢记使用 OpenSSL 的常规方式是:
% T: [/ W( o& Q* i; i# openssl command command-options arguments: ^$ ]& ^* n) g( c3 h
示例如下:
( ~5 Y- M) W1 W* q[root@ipsan-node03 ~]# cd /mnt/5 K% v' b4 l4 Y* Z4 u
[root@ipsan-node03 mnt]# ls, T5 F* V" F! L8 {% M0 e) B
[root@ipsan-node03 mnt]# echo "123" > a.txt+ A2 I! o& Q- E! U$ p
[root@ipsan-node03 mnt]# echo "456" > b.txt
. t' w8 i. o2 [: A/ J1 J[root@ipsan-node03 mnt]# echo "789" > c.txt& I2 `& s) n2 e
[root@ipsan-node03 mnt]# ls
; i u/ T( M v' T( g8 R7 j; Ra.txt b.txt c.txt
# k% E: S0 {8 N" n6 o5 b. t) M现在要加密当前工作目录的内容(根据文件的大小,这可能需要一点时间)& W! m+ I" g! M
[root@ipsan-node03 mnt]# tar -czf - * | openssl enc -e -aes256 -out test.tar.gz
' D: E# r& ?9 P2 K denter aes-256-cbc encryption password: //假设这里设置的密码为123456
* ~7 `4 t- I& }+ s* A8 VVerifying - enter aes-256-cbc encryption password:' g9 ]4 X! M% p4 R ]
上述命令的解释:2 A6 l/ g' O' y S: P1 Y/ a) Q
enc 使用加密进行编码
* h5 M7 V% J: `6 _0 l% {; ]-e 用来加密输入文件的 enc 命令选项,这里是指前一个 tar 命令的输出# N' s; H7 ~8 F5 h
-aes256 加密用的算法+ r0 _" |( |. H% w$ C
-out 用于指定输出文件名的 enc 命令选项,这里文件名是test.tar.gz- \5 \; N2 ~- n7 y. w
[root@ipsan-node03 mnt]# ls
% Q( N0 q" ?( E7 qa.txt b.txt c.txt test.tar.gz- M. w5 n* A) S
[root@ipsan-node03 mnt]# rm -rf a.txt
0 ^! [8 f/ J3 ~) y% B+ l" ~7 b1 L[root@ipsan-node03 mnt]# rm -rf b.txt
- x2 ^0 o% d: Y) ^( p& n[root@ipsan-node03 mnt]# rm -rf c.txt ) R' |2 A1 `* W+ h
[root@ipsan-node03 mnt]# ls: K! u. M8 ~4 q4 G2 d3 K
test.tar.gz) m: G$ d [5 I9 E: t
对于上面加密后的tar包直接解压肯定是不行的!1 e( E& f; h+ ]' o
[root@ipsan-node03 mnt]# tar -zvxf test.tar.gz
# g9 A) L4 v6 t4 D9 x% [) ~) [& M! Jgzip: stdin: not in gzip format
4 ]4 w7 w0 V" Q S$ ntar: Child returned status 1
2 s/ E2 v i% D4 N* C3 }tar: Error is not recoverable: exiting now5 [3 k( |# G( e; |* T( U8 `8 F; |8 e
要解密上述tar归档内容,需要使用以下命令。
: e: H& w: B/ w5 B1 M9 d; Y[root@ipsan-node03 mnt]# openssl enc -d -aes256 -in test.tar.gz | tar xz -C /mnt/, {4 S V7 F c% ^* U
enter aes-256-cbc decryption password:
% F7 H& n. ~: C% v9 L! Z% |[root@ipsan-node03 mnt]# ls( F; H: Y0 W% ?& k
a.txt b.txt c.txt test.tar.gz
& a6 K, j) b; ^: _+ Z# p上述命令的解释:
' v1 U) o: `( Q l-d 用于解密文件
1 p( A# \( u9 D) ]$ z( `-C 将加压后的文件提取到目标目录下! V& C! v2 [- d) P( |9 e
当你在本地网络或因特网工作的时候,你可以随时通过加密来保护你和他人共享的重要文本或文件,这有助于降低将其暴露给恶意攻击者的风险。8 Y: h8 r/ I! G0 y
方法四:shc加密(仅仅对shell脚本加密)
; w/ q8 \0 @" ?0 tshc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、
6 p7 {# R9 _4 Y$ G" ]) ~# C密码等不希望公开的问题。
7 p }& U' j9 T& b & I7 e* b" K5 w( S; Y6 w: K
如果你的shell脚本包含了敏感的口令或者其它重要信息, 而且你不希望用户通过ps -ef(查看系统每个进程的状态)捕获敏感信息. 你可以( [4 b+ q" g% t
使用shc工具来给shell脚本增加一层额外的安全保护. shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执" ~0 ^( O, Y( B2 i, P
行文件(支持静态链接和动态链接). 该工具能够很好的支持: 需要加密, 解密, 或者通过命令参数传递口令的环境.: T2 P/ W& n7 ^1 J* T) {. o& I& [ j
- i; p) X! ]+ K2 B9 q1 Bshc的官网下载地址:
" x+ w6 O" W: x6 l; a, Dhttp://www.datsi.fi.upm.es/~frosal/sources/$ v$ q. f E' t% n- u0 X
5 d: `/ e6 R' |/ G$ F" }
安装方法:: }$ D+ x8 V: X+ T
[root@ipsan-node03 ~]# cd /usr/local/src/
# b3 n4 i+ @& l. t! H[root@ipsan-node03 src]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
, }# e. Z6 m2 N! i[root@ipsan-node03 src]# tar -zvxf shc-3.8.9.tgz+ ~1 c! {# ?: ?7 i& [
[root@ipsan-node03 src]# cd shc-3.8.9
! j, M4 s, r- A* {$ H[root@ipsan-node03 shc-3.8.9]# mkdir -p /usr/local/man/man1
! \! _9 m! l3 J这步是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;
( R# Q. W" T; @( Z2 L" d* d将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装5 H2 a! k9 e# y0 r+ g6 B' J
+ ~9 b* ~7 t8 N$ g
[root@ipsan-node03 shc-3.8.9]# make install
% V' d' B0 g( g& k/ [' y这是要回答yes或者y,不能直接回车,否则会报错
. S2 E4 G' @/ ] 0 Y1 w" A7 w0 [% S! `' ?4 m! J
需要注意的是,sch只能能shell脚本文件进行加密,其他文件都不可以!
7 L) x8 k' O& a ; q7 \9 \2 ^9 ]' G3 t0 o" ]
sch加密使用方法:6 ?7 Y( c0 _# Z% `' i! W# [7 @
"-f"选项指定需要加密的程序! s& @: S9 G' x4 S; G( U( V% N
[root@ipsan-node03 ~]# ls- R& N$ U7 Y; i( l% ?% u8 d
text.sh
/ I" s% A8 y4 L8 r- w1 m[root@ipsan-node03 ~]# cat text.sh
: E L7 x2 H& P8 J2 s0 N# a5 u#!/bin/bash# I9 g/ @' A, J. W B6 H* o2 F' a' E; i
echo "hahaha"/ @+ \! k5 z* q# F6 n
[root@ipsan-node03 ~]# shc -r -f text.sh9 P& p$ q9 e: q
[root@ipsan-node03 ~]# ls6 Y O( E& K8 t; U( o) `; {
text.sh text.sh.x text.sh.x.c3 k9 H% i/ s; Q3 P% G
6 J5 d% m2 C, K6 q2 I) E0 _注意:要有-r选项, -f 后跟要加密的脚本名。- g8 D' k6 p0 g7 t% z1 b/ t( f
运行后会生成两个文件,script-name.x 和 script-name.x.c" z& ^' z4 }$ E
script-name.x是加密后的可执行的二进制文件.5 O1 T& m( r: _! }
./script-name.x 即可运行.
1 `& c$ P5 }1 S: Vscript-name.x.c是生成script-name.x的原文件(c语言); |# k6 q0 ?/ e1 P3 {
[root@ipsan-node03 ~]# ./text.sh
- p" B: s9 U4 K2 L" V8 x& }hahaha
1 i% v- X0 s5 L" a, z2 ^[root@ipsan-node03 ~]# ./text.sh.x3 z' o$ k7 P6 O* _$ p. m% K! \
hahaha6 n: X( g3 ]. V1 q9 s
4 r) l- L2 |; l/ z6 v& }3 U通常从安全角度考虑:
2 X o0 R! A6 w: e使用sch命令对shell脚本文件进行加密后,只需保留.x的二进制文件即可,其他两个文件均可以删除!
9 M! |/ x) \8 z[root@ipsan-node03 ~]# ls
' f$ K1 ?+ Q) |$ ]/ J% S b/ W7 Jtext.sh text.sh.x text.sh.x.c
* u# P+ P$ h, N3 p$ N0 F[root@ipsan-node03 ~]# rm -rf text.sh5 x$ V( y( c y7 `: I$ k
[root@ipsan-node03 ~]# rm -rf text.sh.x.c! @! @& l# {. Y; z- C( q
[root@ipsan-node03 ~]# ls
2 H! Z* K2 I ~" ]2 z7 _3 |# }0 E( {% gtext.sh.x
3 ~* k$ w) V: d$ S' U9 b[root@ipsan-node03 ~]# ./text.sh.x
4 |1 _* t! H3 d0 l1 g# M) [7 V6 o' ^hahaha5 I8 Q; Z" n* z; M# O
8 h2 f( n& f. |/ F
另外:& }6 C+ V4 Z+ \5 E
shc还提供了一种设定有效执行期限的方法,可以首先使用shc将shell程序转化为二进制,并加上过期时间,如:
7 C; L) h' v& M% }3 A[root@ipsan-node03 ~]# shc -e 28/02/2018 -m "this script file is about to expire" -v -r -f text.sh
( W8 ^8 _( h+ h- m6 Ushc shll=bash4 ^- O2 u: l4 f* l1 g; k
shc [-i]=-c
* D/ {/ J3 j; ^0 N' x7 W8 a2 i6 Hshc [-x]=exec '%s' "$@"
2 |/ ^+ X/ }: d9 lshc [-l]=. J- _. F, n! |
shc opts=/ m1 l; \) H2 W( g5 n2 l, ~4 n5 J- E
shc: cc text.sh.x.c -o text.sh.x% ~- {) E" _* I2 e7 n1 G8 @! {
shc: strip text.sh.x( t! Y0 }' B" v* ?
shc: chmod go-r text.sh.x5 c) C7 H z, I! l
[root@ipsan-node03 ~]# ls6 T+ H) z. G8 H
text.sh text.sh.x text.sh.x.c- m0 T9 K! U: U( T3 Z) m( Z
# P( d& W+ N) h" b* o7 R- n1 m
解释:3 N# [2 G0 a$ r0 Z7 f5 O
-e:指定过期时间为2018年2月28日9 o1 N& C8 r+ W) ~1 y6 ?. X
-m:过期后打印出的信息;
% d6 D! {# l! \+ f0 A" g-v: verbose2 E4 U. X, l/ o
-r: 可在相同操作系统的不同主机上执行+ ^9 h7 S5 @. q9 z X' u$ P$ O
-f: 指定源shell4 R( Q% w, D d, Z
% O1 ]4 m- l: T: l6 H( o
如果在过期后执行,则会有如下提示:
/ B5 _8 h( |1 m4 e' D[root@ipsan-node03 ~]# ./text.sh.x. A9 u3 }, Q, E U" q5 i: u
./text.sh.x: this script file is about to expire* T! b$ s. L% w- ~9 F* B/ s# I
使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题!!3 c9 L& v2 [" c* ~
; X9 u) y/ Q( z, E" r! R3 m
sch的帮助命令:$ e2 P7 \4 `& P; ~2 Z
[root@ipsan-node03 ~]# shc -help
/ o3 J9 M4 V4 {5 G; S5 m/ ?: N M) pshc Version 3.8.9, Generic Script Compiler$ W# {4 R: G5 v$ G# P/ y
shc Copyright (c) 1994-2012 Francisco Rosales <frosal@fi.upm.es>
$ g; L% G% D& ]3 Cshc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script' ]) B& Y' t$ z
" P2 w% ]/ q0 D( ?+ U
-e %s Expiration date in dd/mm/yyyy format [none] (指定过期日期)/ j. R2 C A7 ?3 X1 }
-m %s Message to display upon expiration ["Please contact your provider"] (指定过期提示的信息)
6 }9 T n% U) s, C& |! B -f %s File name of the script to compile (指定要编译的shell的路径及文件名)
% \2 M: o/ C: k# g- Y -i %s Inline option for the shell interpreter i.e: -e
1 U7 C5 [9 h0 V -x %s eXec command, as a printf format i.e: exec('%s',@ARGV);
4 h6 X9 Q1 Y' z- a9 ^ -l %s Last shell option i.e: --% E* p4 z) {, n3 Y7 k
-r Relax security. Make a redistributable binary (可以相同操作系统的不同系统中执行)
9 o; }4 i- Y' ]2 k1 F -v Verbose compilation (编译的详细情况)
, u8 y* `- D+ s6 q9 Q Y' E+ R -D Switch ON debug exec calls [OFF]
6 @* |4 `3 N% O% r! [7 S7 _ -T Allow binary to be traceable [no]" S7 p- {. C- b5 {
-C Display license and exit
+ A; r6 }$ `( ^* G -A Display abstract and exit
a" S! o, ^* X* V -h Display help and exit
6 q6 c4 X; Y. \0 y# n0 r
l K" R& _* E6 [! ` Environment variables used:
. u/ L+ H0 S8 W8 W* ~( t Name Default Usage1 Y4 t+ m4 y( v- @' V
CC cc C compiler command: S% z5 J& i3 q' F* I; n
CFLAGS <none> C compiler flags
* _1 w8 K: E5 _( u6 Z
, p5 z; q- } @* O2 G Please consult the shc(1) man page.$ y3 H7 U7 j& R% s& v
/ a/ I( D+ v2 z: u说明:
. c5 [* Y, D. i- H0 a- H" ]4 t$ H! c经测试,相同在操作系统,shc后的可执行二进制文件直接可以移植运行,但不同操作系统可能会出现问题,
5 Q% Q. D8 p; _& d比如将上面的test.sh.x的二进制文件在CentOS6.9上加密后移到redhat as5u4上不能运行,出现"Floating point exception"错误提示,* g5 n7 w+ w( o9 M) v9 ]* J2 x" X
但移到另一台CentOS6.9上直接运行没问题。$ ^( G9 g$ W( {; c
方法五: ZIP加密
! K" p2 b3 ~' K( w8 c1)文件加密
" w% \! A. {! j- k, B5 d8 k, n9 r# l使用命令"zip -e filename.zip filename" 即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的, g& L) _' W0 G
下面开始为test.txt文件进行加密( J. n3 Z! c; p7 r8 x$ ^
[root@centos6-vm02 ~]# cat test.txt ( y/ R1 ]/ f9 m$ ]5 \+ S! S& N I; k
this is a test!!!# S+ e7 C9 f7 t& _1 `
[root@centos6-vm02 ~]# zip -e test.txt.zip test.txt //如下进行加密操作时,需要输入两次密码: K3 q- H1 G5 @( ~
Enter password: 9 d! W7 @7 W! ^, t6 ]
Verify password: - y, P& n: Z) S/ U+ J' J! C% s
adding: test.txt (stored 0%)
5 h. D- @& R8 K& C0 P[root@centos6-vm02 ~]# ls4 J/ [. x5 x" c* ]+ r
test.txt test.txt.zip
" S% y: I f1 B: ]" I6 S) |, W进行解压的时候,需要输入密码
5 e' G' Y8 V) q[root@centos6-vm02 ~]# rm -f test.txt
) U2 A: o& K0 R1 h1 |) J, o* k[root@centos6-vm02 ~]# unzip test.txt.zip
! V( z3 N. q9 \2 d0 Q j( gArchive: test.txt.zip* A Z8 x" y6 L N0 u; W; }
[test.txt.zip] test.txt password: 2 D. T) O9 S2 b h" @2 M
extracting: test.txt * o7 [& U! _! ~. B. d
[root@centos6-vm02 ~]# cat test.txt4 b6 t r' U+ `6 @3 j* K4 r
this is a test!!!( S0 X. A' v! X% [
2)文件夹加密* H3 t1 n9 C! v
使用命令"zip -re dirname.zip dirname"即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的。3 w2 N( \0 R k( E
下面开始对目录进行加密
- x3 W1 y% A; g( \! U[root@centos6-vm02 ~]# mkdir dirtest5 n; f) ]% M4 O7 }3 _& _4 a6 k5 R
[root@centos6-vm02 ~]# cat dirtest/haha.txt
, h H$ h& H9 x" e* @; ethis is test of dir!!!
- Q7 `" a' O8 P& X[root@centos6-vm02 ~]# zip -re dirtest.zip dirtest
9 p: _& S; u" q6 v- c5 h+ y7 KEnter password:
7 j* R0 X; m1 f7 J5 b4 @6 p- L: dVerify password: # l# ^! v0 W _% H; w. V
adding: dirtest/ (stored 0%)( `! U# y ]. ]- J
adding: dirtest/haha.txt (stored 0%)* k- B+ B0 R; m/ ?5 g
解压目录时需要输入密码
) N r# a" F/ z1 P* c/ i[root@centos6-vm02 ~]# rm -rf dirtest
" Q* J/ `4 ^" y[root@centos6-vm02 ~]# unzip dirtest.zip 3 n3 J" p7 Z! m! _, F I6 p
Archive: dirtest.zip
! k: u+ C6 s" o3 e. p, G& Y, | creating: dirtest/
# {& v6 Y% D) \3 d- n" r[dirtest.zip] dirtest/haha.txt password: 4 q2 L( r: Q; j4 s$ O
extracting: dirtest/haha.txt
$ g7 ~6 U/ U, C4 }1 E9 e" D[root@centos6-vm02 ~]# ls dirtest* O4 P5 l) c$ D$ t3 @" b
haha.txt
) V7 q+ F4 C3 l" q+ [% b[root@centos6-vm02 ~]# cat dirtest/haha.txt
! G$ { q% \8 i& Y7 k" F; Athis is test of dir!!!
& K' G1 w! T; U+ e方法六:GnuPG加密4 x O- y! c) F& Y0 N
GnuPG的全称是GNU隐私保护(GNU Privacy Guard),常常被称为GPG,它结合了一组加密软件。它是由GNU项目用C编程语言编写的。最新的稳定版本是2.0.27。在如今的大多数Linux发行版中,gnupg程序包都是默认随带的,所以万一它没有安装,你可以使用apt或yum从软件库来安装它(yum install gnupg)。注意:gpg只能对文件进行加密,对目录则无法完成加密!
: K' o( {% w" H; N& G下面开始使用GnuPG方式对test.txt文件进行加密
4 M- N% q9 w: h) r) @[root@centos6-vm02 ~]# cat test.txt
6 s) o: n7 _# n- q( `0 i+ ^this is a test!!!
& o1 i- {. C5 k$ s[root@centos6-vm02 ~]# gpg -c test.txt
6 }( H$ W' b( e6 a n& Ucan't connect to `/root/.gnupg/S.gpg-agent': No such file or directory //这个信息可以忽略
* Q- y& L7 g! M1 B, H注意:如上加密的时候,会弹出来一个对话框,要求Paraphrase输入两次密码,对这个特定的文件进行加密。
& |8 t# S$ Q0 G3 _# o一旦运行带-c选项(完全使用对称密码算法加密)的gpc命令,它会生成一个文件.gpg文件。* f. e0 h* D2 z( E( L
[root@centos6-vm02 ~]# ll test.txt*
5 c& B0 ~4 b' g( j8 y-rw-r--r--. 1 root root 18 Jan 4 10:08 test.txt
6 {4 e# \3 D) z1 U6 F- j; [1 f-rw-r--r--. 1 root root 61 Jan 4 10:04 test.txt.gpg$ E* s" \* U' ?1 \; S5 y
对文件进行加密后,最好将源文件删除!不要再保留源文件了!; a g1 u$ X; |: A; e" j
[root@centos6-vm02 ~]# rm -f test.txt
% p _! o V% O' X: T3 `5 y" g文件解密操作。
" N* f0 y; R! n" d. o: Y1 B注意出现Paraphrase提示时,需要提供加密时输入的同一个密码才能解密2 i+ B" P3 Q' E3 \% k4 o1 ?
[root@centos6-vm02 ~]# gpg test.txt.gpg 1 \( \+ N! c! t
gpg: 3DES encrypted data
( G, w5 `9 h& e: [7 j9 W* k# Xcan't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
+ s) o* R" [8 R- kgpg: encrypted with 1 passphrase
8 j% N+ g9 P* O) igpg: WARNING: message was not integrity protected8 u" f E# b- m; ~+ Q2 r
[root@centos6-vm02 ~]# ll test.txt*
* L; P6 m; q/ U5 L% [-rw-r--r--. 1 root root 18 Jan 4 10:08 test.txt
. u0 N/ X* L* a b& R-rw-r--r--. 1 root root 61 Jan 4 10:04 test.txt.gpg
2 \: l% w. T4 f+ M3 Y; X[root@centos6-vm02 ~]# cat test.txt* i7 z% }7 Q# @
this is a test!!!
# Z! b, Q/ z* _" P8 ]二、对字符串进行加密/解密方法 ; o7 \ {. G, ?
Linux系统下自带的工具base64可以对字符串进行加密和解决,一般是从标准输入读取文件内容,base64编码并打印到标准输出!: ^) ]7 ~: `4 z o3 t% w7 A; u% ~
使用"base64"或"base64 -i"命令进行字符串加密操作( }" ?/ b9 T/ W4 Q
使用"base64 -d"命令进行字符串加密后的解密操作( Z! g$ |- V8 d8 S; v
如下对字符串"wang@123"进行加密操作:
" ^2 a# b" `+ h" d3 u[root@ss-server ~]# echo "wang@123"|base64' k7 |# v9 k/ X5 a# I8 I9 |
d2FuZ0AxMjMK; H; \8 N: G6 U* V/ Z
[root@ss-server ~]# echo "wang@123"|base64 -i
0 W/ p4 q w/ B5 dd2FuZ0AxMjMK
9 v) Y+ i; V5 P( d对上面加密后的字符串进行解密操作
. n% X6 T( S/ U: U6 Z6 c[root@ss-server ~]# echo "d2FuZ0AxMjMK"|base64 -d( A7 B3 V. A! W4 w. @% h
wang@123
5 I: G- Y9 k7 x) u[root@ss-server ~]# echo "wang@123"|base64 -i|base64 -d5 Q0 X! \! D1 H! [
wang@123
7 a7 f, c# \6 S$ T6 T# B% i比如,有时为了安全考虑,需要隐藏tomcat版本,这时可以选择将tomcat版本进行加密
$ z) s; ?' _: B* i j首先查看tomcat版本(在RELEASE-NOTES文件中)9 a7 @4 b) ~5 {" R2 ^9 a! t: @
[root@ss-server ~]# vim /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES
& T* @& }' L0 n+ d........
$ @% k: Y% i" L4 ]7 t........
% F) I8 y9 a4 q( a& ^) _ Apache Tomcat Version 8.5.43# T7 e, Z. K1 _3 U" C
Release Notes6 {) t! n5 k8 x. F9 h b
获取tomcat版本号" y) D% w: c. c0 B* Z1 q* T( K( o3 }
[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'
. a! J" x8 V: `& a0 x7 i/ L: G6 I8.5.43
) H( V" F; M( B, w" E将tomcat版本号加密
8 y- H, i% x( |0 |+ V7 x" h[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i: \% a8 u: v0 t2 ?8 e$ m; E t1 t
OC41LjQzCg==
" A# G! n& u# T: i- C$ [4 n; ]) p4 a替换tomcat版本号为加密字符串
0 H) Q; r# x( Z0 J1 J( K[root@ss-server ~]# TOMCAT_VERSION_OLD=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}')
# G; L6 k! c& {, a0 P6 ~[root@ss-server ~]# TOMCAT_VERSION_NEW=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i)
1 y% U3 ]1 s, ?[root@ss-server ~]# sed -i 's/${TOMCAT_VERSION_OLD}/${TOMCAT_VERSION_NEW}/g' /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES
* ] h7 L7 p5 n6 @3 s; H9 n+ r查看替换后的tomcat版本号( J2 ]8 F z9 o
[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'* B, @. h8 W; s q0 K9 k
OC41LjQzCg==
. n7 m6 u+ G3 e; k; Z===================================================================================! T# N1 P% {, w4 u
需要注意:
( y1 y9 X) I, x ilinux系统自带的base64工具有BUG,base64解码有时会莫名出现报错:base64: invalid input。4 d5 S4 b- e) j ^& a
所以最好还是使用源码包编译安装base64:: b5 R" s! W% d7 k/ H
[root@ss-server ~]# wget http://www.fourmilab.ch/webtools/base64/base64-1.5.tar.gz8 B# y! u3 p" G* r! {& P
[root@ss-server ~]# tar zxf base64-1.5.tar.gz
' K. U2 Z( k7 T! @7 K+ ~8 a( _/ F[root@ss-server ~]# cd base64-1.5: l1 q0 _4 c2 j
[root@ss-server base64-1.5]# ./configure* @) \; e0 I- t# @3 N
[root@ss-server base64-1.5]# make && make -n install5 C( m% ~5 d( L+ G7 y4 E Z8 i4 q
[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i
; e& V# L+ T) ?8 }' L9 _+ q; z8 id2FuZ0AxMjMK8 ?/ ~2 r$ c8 Z
[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i| ./base64 -d9 C" `& \4 Y& m& N
wang@123
2 o y9 t0 a8 m* }! L1 A3 C
# \" a! v n) w2 ~, ^& v5 x |
|