- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
一、对文件进行加密/解密方法
. O$ S, f4 G- a. p# T6 f方法一:gzexe加密9 I1 y7 C1 ?; R$ u
这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。示例如下:
4 R8 }& D0 d/ ]2 x$ E1 k3 h- @[root@ipsan-node03 ~]# echo "hahahaha" > a.txt
o" ~. X+ \- T2 G0 [# D[root@ipsan-node03 ~]# cat a.txt 7 N% z6 A" k1 J+ \( F+ k
hahahaha6 L% o' ?/ V' W$ g- y$ {, }
[root@ipsan-node03 ~]# ls a.txt + O* F' r$ l1 U; j3 U
a.txt6 ^ ^- L" Y" S( ^
[root@ipsan-node03 ~]# gzexe a.txt
$ J6 }8 z: j: T( {$ Ca.txt: 22.2%
+ H7 O: ~3 Z {! F[root@ipsan-node03 ~]# ls) W0 N3 R) F/ L2 b% U
a.txt a.txt~ 7 k; q" e- s, o4 [$ o5 g
gzexe方法会把原来没有加密的文件a.txt备份为a.txt~ ,同时a.txt文件变成了加密文件(即变成了密文)! T( ?+ L' z+ k7 x( R
[root@ipsan-node03 ~]# cat a.txt
' V, A; i$ ]$ Q. \. S0 N& V쏎
! x0 W$ Z3 a+ ~& V1 g( k) k( g
4 V, F* Z7 b& b+ O) C[root@ipsan-node03 ~]# cat a.txt~9 ^+ M/ I: j; R z+ e V1 l
hahahaha7 r1 `% Q9 p- x
通常使用gzexe加密后,会将备份文件(这里指a.txt~)删除+ p7 ^% j: n4 h
[root@ipsan-node03 ~]# ls
: ?% I! G5 Z; N/ p0 X7 ?a.txt a.txt~ ( n: b& S0 W: S$ F$ `) s
[root@ipsan-node03 ~]# rm -f a.txt~9 Y4 s2 H+ M1 B7 t' B
[root@ipsan-node03 ~]# ls1 K; X: r4 h! K6 K4 Q0 l( v, T
a.txt- ?, o @) z F; ]. N& r
使用-d参数进行解压操作
, }9 f4 o* R% q[root@ipsan-node03 ~]# gzexe --help6 y. z4 d. @; _9 `9 s3 @
Usage: /usr/bin/gzexe [OPTION] FILE..., T% B$ b4 n$ y& p# M A" @
Rename each FILE with a compressed version of itself, renaming FILE to FILE~.% E' K. D, P5 V& p6 c6 ?5 x7 p
-d Decompress each FILE instead of compressing it.
: u& \3 m( E0 p i6 D --help display this help and exit
# ?' [/ J" u( F. f+ A& o4 ^4 A$ T --version output version information and exit" n% Q- Q5 t8 C& I7 O2 n5 q
Report bugs to <bug-gzip@gnu.org>.
( v' M9 N$ L; R- T解压之后的文件a.txt内容就会还原回来,同时也会将之前的加密文件变成a.txt~,同样,通常也会删除这个a.txt~的备份文件 P- s7 P- [! e$ t. ~7 p1 K
[root@ipsan-node03 ~]# gzexe -d a.txt
/ P7 I2 Z' l. c8 \. t# I, K# s; n. r[root@ipsan-node03 ~]# ls
6 x. P" U/ d. E! Y7 X$ Z; H6 D$ ?6 _a.txt a.txt~
/ H. t; U& k5 X- {8 {2 ?; {" o. X, w[root@ipsan-node03 ~]# cat a.txt
- ?: s: K3 g; c3 lhahahaha
5 p( \( ?% w2 Y1 o: g( C0 u) o: `0 H3 z" q
5 Q2 M4 T8 u8 ~0 J+ r8 d7 l
[root@ipsan-node03 ~]# rm -f a.txt~6 D: R t7 D% m- m6 \
[root@ipsan-node03 ~]# ls
' m6 U+ a3 H/ C& H; ^a.txt
' v2 m5 d% ~5 E+ i, D- H& U方法二:用tar命令 对文件加密压缩和解压
/ e% m/ A1 Z, V& W. X/ y[root@ipsan-node03 ~]# ls; U1 B, }: o! r4 T
test.txt
$ a7 P4 a6 M; a- h, N6 y[root@ipsan-node03 ~]# cat test.txt& o8 I+ f7 a m
hahahaha
6 @: Z: A, l" A' x& W/ V0 N# q$ uheiheihei
% k! D. n% k) n) `0 x( V
8 }7 x; V- ~, O) m" C6 q如下命令是对filename文件(test.txt)进行加密压缩,生成filename.des3加密压缩文件,123@123为加密的密码5 H+ E; A# [) Y: x/ o1 ?# a
[root@ipsan-node03 ~]# tar -zcf - test.txt |openssl des3 -salt -k 123@123 | dd of=test.txt.des3, n& p. S, o5 m6 L5 C: L7 l. I; d s
0+1 records in# n% M# W: X9 R( T1 e9 A3 [
0+1 records out$ W# K7 _9 z! |+ ]% Y
152 bytes (152 B) copied, 0.00333366 s, 45.6 kB/s4 U$ h$ e+ W* L
---------------------------------------------------------------------------------------------------------* {, k. \" O2 U+ j! E+ _
也可以将/mnt目录下的所有文件全部加密压缩
2 }8 d4 d' d2 M1 T+ ]1 B J[root@ipsan-node03 ~]# tar -zcf - /mnt/* |openssl des3 -salt -k 123@123 | dd of=test.des3
6 W* M. B W2 z+ [. }或者根据匹配规则进行加密压缩
% i( w9 `+ g1 Z* ?[root@ipsan-node03 ~]# tar -zcf - /mnt/pass_* |openssl des3 -salt -k 123@123 | dd of=test.des3. ^/ u1 g# _$ z z3 C( U
---------------------------------------------------------------------------------------------------------
7 o* G9 H. F# K: [$ q0 T
' E8 w8 C! M6 U3 w; z通常加密后,会将源文件删除+ Q1 U6 Q- h2 n& A$ ~: ?
[root@ipsan-node03 ~]# ls0 D) W8 C$ [$ ~' \& S
test.txt test.txt.des3
& o t) Z0 W. L$ z[root@ipsan-node03 ~]# rm -f test.txt
3 l2 Y& _, }9 b4 A7 w+ O' v[root@ipsan-node03 ~]# cat test.txt.des3' z$ |/ J% V( C7 ]
4 ~$ C7 v. Q, }5 c. f- P) j解压操作:0 N. u- t; e$ g2 |; b
[root@ipsan-node03 ~]# dd if=test.txt.des3 |openssl des3 -d -k 123@123 | tar zxf -/ q/ w& W" r% c! U
0+1 records in
! S5 ?/ m5 }) W7 L0+1 records out
n- \# Z; f Z1 x# S4 W/ j152 bytes (152 B) copied, 4.5873e-05 s, 3.3 MB/s9 |' {& L+ ~3 Q
5 t9 X5 R+ Z1 S. y. I5 z[root@ipsan-node03 ~]# ls
8 t2 b$ V3 X# i9 R/ Q( }3 b: ftest.txt test.txt.des3
4 z4 t0 ^* x9 {/ {[root@ipsan-node03 ~]# cat test.txt3 `/ H. ]# | Y! v# H5 I4 V
hahahaha# Q( f9 ? [: q, ~
heiheihei) N0 E2 t, o% `( ~9 W! \
: e: G/ |1 l. b# f6 [
注意命令最后面的"-",它将释放所有文件," M9 }. G. c3 D! q$ ^0 G& Z5 s% {
-k 123@123可以没有,没有时在解压时会提示输入密码
/ ^, N5 R# c& O, e3 m8 d+ b4 z方法三:结合Tar和OpenSSL给文件和目录加密及解密% R0 W# Z7 }( n2 L% }
当有重要的敏感数据的时候,给文件和目录额外加一层保护是至关重要的,特别是当需要通过网络与他人传输数据的时候。基于这个原因,* H5 z- W7 r. W$ E
可以用到tar(Linux 的一个压缩打包工具)和OpenSSL来解决的方案。借助这两个工具,你真的可以毫不费力地创建和加密 tar 归档文件。
! c4 w0 I3 U7 `8 h( u! }下面介绍使用 OpenSSL创建和加密 tar 或 gz(gzip,另一种压缩文件)归档文件:
, _+ f4 k: F% c8 A3 K* p7 V& d牢记使用 OpenSSL 的常规方式是:0 h7 [( B1 I+ s. U6 L7 T: M/ }2 Z
# openssl command command-options arguments
7 ~& B5 A" D: p* z" ~8 s. m示例如下:
4 u) E4 P9 ]% p% t[root@ipsan-node03 ~]# cd /mnt/& h- v) a5 k. A K# {) ~9 B
[root@ipsan-node03 mnt]# ls6 b7 L7 `. p1 Z* K% |
[root@ipsan-node03 mnt]# echo "123" > a.txt
* {+ j) g0 e5 ^[root@ipsan-node03 mnt]# echo "456" > b.txt! K( P4 J* m0 p& `6 I8 [6 g
[root@ipsan-node03 mnt]# echo "789" > c.txt. a; t+ n' E6 v% |3 M9 W, \) b8 @* m
[root@ipsan-node03 mnt]# ls, f1 `/ `& x& n6 a# e% l. g
a.txt b.txt c.txt5 b+ \1 V; d5 j) B4 O0 H
现在要加密当前工作目录的内容(根据文件的大小,这可能需要一点时间)0 m! b2 F( p" y9 D
[root@ipsan-node03 mnt]# tar -czf - * | openssl enc -e -aes256 -out test.tar.gz! \1 @* [. d' v! ?
enter aes-256-cbc encryption password: //假设这里设置的密码为123456) p. y' Y4 F6 j; A7 Z5 c( ]
Verifying - enter aes-256-cbc encryption password:
3 W' S8 }1 n2 [+ }9 E! p* Z上述命令的解释:
' s a9 F5 x$ d3 D) J Qenc 使用加密进行编码
$ _0 U: z: l; n; e; m/ [; u-e 用来加密输入文件的 enc 命令选项,这里是指前一个 tar 命令的输出+ F; B( I# C! ?+ d0 x
-aes256 加密用的算法' R9 L/ O8 K+ O/ q1 [, I* b/ f* B
-out 用于指定输出文件名的 enc 命令选项,这里文件名是test.tar.gz4 [3 \9 }+ j( K9 F/ J6 O2 i. Z. T/ o% \
[root@ipsan-node03 mnt]# ls
0 W/ h! H$ _' m# v& Ea.txt b.txt c.txt test.tar.gz/ U- a) f' ^4 m8 E8 f) S) J& m2 z
[root@ipsan-node03 mnt]# rm -rf a.txt 1 h7 n2 S2 q- S2 f/ t1 |$ z
[root@ipsan-node03 mnt]# rm -rf b.txt 8 s5 i$ c- j( |2 U- w8 X9 l
[root@ipsan-node03 mnt]# rm -rf c.txt + e9 Y/ w) V! w- r X5 A6 Z" {
[root@ipsan-node03 mnt]# ls
6 Y! v! ?8 o S3 \4 C btest.tar.gz3 W" ~/ ^- f- S) K& U1 E; l
对于上面加密后的tar包直接解压肯定是不行的!
0 ~' _, J# ^' y7 E! ][root@ipsan-node03 mnt]# tar -zvxf test.tar.gz 6 y! U0 g! i3 i
gzip: stdin: not in gzip format1 i9 l t/ D6 Z2 }5 z6 C( R
tar: Child returned status 1
_: U2 t O$ K* Z5 V) W2 ?2 etar: Error is not recoverable: exiting now, }1 W6 A: t1 c0 ^6 S
要解密上述tar归档内容,需要使用以下命令。+ m1 b7 z# Y) r; R! W+ ?3 T# V
[root@ipsan-node03 mnt]# openssl enc -d -aes256 -in test.tar.gz | tar xz -C /mnt/: O9 V- ~! X8 K5 c# Y% {# U
enter aes-256-cbc decryption password:
# k% c6 z, w$ I4 Y[root@ipsan-node03 mnt]# ls
8 m ~; T0 K7 p! e9 La.txt b.txt c.txt test.tar.gz# H2 F9 k/ N5 g0 z! T
上述命令的解释:; G: o6 t* a8 W$ U# E# \: j: S
-d 用于解密文件; F( ~. Z2 m% f/ I* g
-C 将加压后的文件提取到目标目录下
9 ?4 i# \. v# ^% l" o O0 f8 {! i当你在本地网络或因特网工作的时候,你可以随时通过加密来保护你和他人共享的重要文本或文件,这有助于降低将其暴露给恶意攻击者的风险。' Z! y+ C S0 a& v9 W
方法四:shc加密(仅仅对shell脚本加密)
) |! D6 P2 a% H |shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、0 J# l' M1 a) A6 C( j" }# B
密码等不希望公开的问题。5 n( Y- g& a8 b+ l
; _: H& O+ G& s如果你的shell脚本包含了敏感的口令或者其它重要信息, 而且你不希望用户通过ps -ef(查看系统每个进程的状态)捕获敏感信息. 你可以
/ n" z1 u5 w- {9 v* e使用shc工具来给shell脚本增加一层额外的安全保护. shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执8 n5 n' y" M/ z$ A
行文件(支持静态链接和动态链接). 该工具能够很好的支持: 需要加密, 解密, 或者通过命令参数传递口令的环境. e- ?7 J& P# Y& ?6 O
( G: d$ s/ J. L( c
shc的官网下载地址:
% }- ?/ T( y; Ihttp://www.datsi.fi.upm.es/~frosal/sources/
, l* u/ M+ N6 J( i B
+ _0 b$ o" H2 r安装方法:
6 d: \9 J1 P5 {2 q[root@ipsan-node03 ~]# cd /usr/local/src/1 p9 n, O# @, Q/ @
[root@ipsan-node03 src]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz/ `1 z7 W' t3 b1 i1 q
[root@ipsan-node03 src]# tar -zvxf shc-3.8.9.tgz
( b& S; l; i. d8 g[root@ipsan-node03 src]# cd shc-3.8.9$ ]0 X! @& F% y7 l3 s- E- @, A* n9 E
[root@ipsan-node03 shc-3.8.9]# mkdir -p /usr/local/man/man1
3 H5 j x. t7 X$ u/ O; s/ a这步是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;0 u5 P% M% c8 ^+ } V
将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装
6 I1 m& u$ ?. N5 O
' K# b2 ?; r' ]8 ~[root@ipsan-node03 shc-3.8.9]# make install5 d- W3 N$ c( R2 ~
这是要回答yes或者y,不能直接回车,否则会报错
- ?7 f! u* \$ D0 x$ W8 e2 R* u4 y : e* z+ a p# Z8 G ^7 R: u8 a3 K
需要注意的是,sch只能能shell脚本文件进行加密,其他文件都不可以!
+ \" j( V4 _$ P1 H) ]) C' {) @% `
+ b/ i/ [- x" R# ssch加密使用方法:
/ B. ~7 l( f0 M0 u+ ?"-f"选项指定需要加密的程序
+ w. Y ~ m2 H[root@ipsan-node03 ~]# ls& R, F7 { D' d, J: c
text.sh# I6 s" E/ x5 Q+ k/ P+ v
[root@ipsan-node03 ~]# cat text.sh
6 k6 l! {6 J& W* e#!/bin/bash
! a b& _- e% R/ ^$ [9 [. {' ^$ M+ iecho "hahaha"+ T$ p: E, z2 z/ G6 o
[root@ipsan-node03 ~]# shc -r -f text.sh' e% o/ t; e* B6 G! x3 M2 e
[root@ipsan-node03 ~]# ls! @& V+ v( l6 O$ g
text.sh text.sh.x text.sh.x.c6 M+ }" U( S v
! A5 r k/ c( a( D4 ]! y o
注意:要有-r选项, -f 后跟要加密的脚本名。
; b$ C8 _0 T/ B5 i( _& {; g0 s运行后会生成两个文件,script-name.x 和 script-name.x.c2 o4 e- _- T0 W% I- }
script-name.x是加密后的可执行的二进制文件.
# O5 N. U# z6 h: _./script-name.x 即可运行.
6 C7 ^, q* t+ J/ a5 j5 hscript-name.x.c是生成script-name.x的原文件(c语言)/ ~. n' h, D! D1 E7 C$ j$ k
[root@ipsan-node03 ~]# ./text.sh& _% T) k) X$ l+ z- Z* M% ~0 d
hahaha
% O2 P8 m2 E4 l; d# a, [5 b& A- ?& k[root@ipsan-node03 ~]# ./text.sh.x
+ ?% _' _5 z/ X: R G& K( Whahaha) \* `. I/ N0 U) n9 A7 y
# E; s! o o& k" J% T5 c2 ~通常从安全角度考虑:
: S* \6 R8 k. @ f1 w! l' d T使用sch命令对shell脚本文件进行加密后,只需保留.x的二进制文件即可,其他两个文件均可以删除!
+ m3 l: w- b- d) e6 w9 b9 ] V[root@ipsan-node03 ~]# ls! n/ o2 F6 h, F# h/ O( x
text.sh text.sh.x text.sh.x.c
]% s3 L/ ] ?. O# C% g& H[root@ipsan-node03 ~]# rm -rf text.sh7 R- C# C- k: L0 J( Y
[root@ipsan-node03 ~]# rm -rf text.sh.x.c
& C7 j1 Y1 U, F3 S0 N[root@ipsan-node03 ~]# ls. `" K' G% F; i! V
text.sh.x% l7 W, |! e' {9 u
[root@ipsan-node03 ~]# ./text.sh.x
& {: h2 w- \( L/ z7 e- x7 ]hahaha$ Z' ~* r- S, m! E
' b: x3 X2 h+ b4 z2 \" s另外:7 K9 |8 e$ I/ x$ m% Z& L& i' Q
shc还提供了一种设定有效执行期限的方法,可以首先使用shc将shell程序转化为二进制,并加上过期时间,如:' c9 x- G. a' B V+ Z$ {: w
[root@ipsan-node03 ~]# shc -e 28/02/2018 -m "this script file is about to expire" -v -r -f text.sh/ {0 H1 t2 ~1 {" D( Z5 n( o# Q0 L
shc shll=bash
9 M$ a8 A6 v0 i! X/ rshc [-i]=-c
* u" z" x* ~) X3 i" T* L9 a$ l) v5 cshc [-x]=exec '%s' "$@"
) b4 g, H0 t2 [' Y, }. n3 j- a9 b& b- Dshc [-l]=. c- t& o: b! T7 K' o9 y* n
shc opts=
1 m0 _1 L- l* ashc: cc text.sh.x.c -o text.sh.x/ o2 i7 M$ K$ h- K. W
shc: strip text.sh.x+ S1 V& r1 h8 Q& M
shc: chmod go-r text.sh.x
, N1 g6 Y! H1 F8 t+ A& B0 U[root@ipsan-node03 ~]# ls
. Y, K- F* Q" Y( c! }8 Stext.sh text.sh.x text.sh.x.c
4 R' l4 F! ]" u" h* K5 w9 N
: R! h$ ~0 A, H+ C1 a解释:( ?# L. A& i& u' l" b
-e:指定过期时间为2018年2月28日4 j/ K$ j& P y5 k. |
-m:过期后打印出的信息;, }& _0 g0 P/ B5 h; c
-v: verbose
' E1 t# H1 ?. | s3 C0 D/ T9 n-r: 可在相同操作系统的不同主机上执行3 ?9 f) G% q. A3 L" r/ `
-f: 指定源shell& g! v- Y6 s8 L
# t5 a0 X: x$ i" H& o如果在过期后执行,则会有如下提示:; T O: |& o) ~- a) F( ^3 v, j; f' ~9 b
[root@ipsan-node03 ~]# ./text.sh.x
# x) s4 ?/ X/ ~% A# ^. _./text.sh.x: this script file is about to expire9 |0 G$ y _. V( [; t6 b n
使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题!!
: n3 Z1 l# F% n $ \& ]" D$ o" H3 ?
sch的帮助命令:
& o" c2 f# _ r0 S[root@ipsan-node03 ~]# shc -help
8 `* k' n* h( P" ~! Nshc Version 3.8.9, Generic Script Compiler
/ k1 }) ?/ D5 {# A% Jshc Copyright (c) 1994-2012 Francisco Rosales <frosal@fi.upm.es>
; l2 Q, D' M" N" p) R( ^shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
- L0 _6 ~! s; @1 T! w
9 N; w+ V# ~$ y7 [! |" I -e %s Expiration date in dd/mm/yyyy format [none] (指定过期日期)
! F+ I5 R/ v$ \) Z; ?8 R) Z -m %s Message to display upon expiration ["Please contact your provider"] (指定过期提示的信息). m$ J, z# w" T1 E
-f %s File name of the script to compile (指定要编译的shell的路径及文件名)
K/ X2 }5 K5 v) E( E4 B2 A9 J7 N -i %s Inline option for the shell interpreter i.e: -e
; K5 P8 f/ j6 V. e4 E -x %s eXec command, as a printf format i.e: exec('%s',@ARGV);# D: F7 |9 a% j, \
-l %s Last shell option i.e: --
, I# _. L# P. K' R9 [* {) b -r Relax security. Make a redistributable binary (可以相同操作系统的不同系统中执行)
& B d- O" B; z, W( x -v Verbose compilation (编译的详细情况)
4 x* O9 K6 E' w4 h* y% t -D Switch ON debug exec calls [OFF]
! P4 R3 j# M& v0 w$ J: Q -T Allow binary to be traceable [no]
' t1 D3 T5 r0 @) I& F -C Display license and exit+ l( K/ |0 s# h2 |
-A Display abstract and exit2 ^6 J1 ]+ v/ F8 S
-h Display help and exit- h( W. j5 a5 S- y& G: F
. T1 J0 D p) x7 `/ d Environment variables used:. P$ A# e3 F/ B- i
Name Default Usage
+ F5 w# o, D& e1 t+ w$ N, J; \/ R CC cc C compiler command
' _! ~( n0 k+ T# C' U; C9 N CFLAGS <none> C compiler flags
/ }0 v4 Q( c+ k# A( O: G
2 g: m; c4 k& \! i5 V Y5 i Please consult the shc(1) man page.
$ R3 @) L [2 j( i5 ^) F5 q
3 Z9 u9 j; I5 u- U. o- z说明:( I3 |/ m" [6 w$ Z6 d& d
经测试,相同在操作系统,shc后的可执行二进制文件直接可以移植运行,但不同操作系统可能会出现问题,
- v0 W" h/ ]) E2 ^比如将上面的test.sh.x的二进制文件在CentOS6.9上加密后移到redhat as5u4上不能运行,出现"Floating point exception"错误提示,/ y/ S$ a0 ?4 X) _. A$ N2 H1 [' |) I
但移到另一台CentOS6.9上直接运行没问题。
8 y3 D" K4 ~. w$ R方法五: ZIP加密
& j! E, M# A, q8 o+ P$ A1)文件加密) s7 e& w4 {# z# ]* G& K
使用命令"zip -e filename.zip filename" 即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的0 C* C! V. d. h8 l9 v
下面开始为test.txt文件进行加密
: g- a; p+ V& C[root@centos6-vm02 ~]# cat test.txt
# [3 P% M1 |0 y3 ithis is a test!!!- Q0 P: R. f" d3 |4 r; a- e+ @
[root@centos6-vm02 ~]# zip -e test.txt.zip test.txt //如下进行加密操作时,需要输入两次密码' ?8 R3 l5 Z1 Y! n- T1 x7 i
Enter password: 1 T, C* W/ k2 P3 ?# ]
Verify password: / h; [ T+ N+ m# v- x* ^$ E. m
adding: test.txt (stored 0%)( F8 s z3 Y! }* q7 c
[root@centos6-vm02 ~]# ls( C; x3 E& C) K5 M
test.txt test.txt.zip
% f: I! Y2 q, k! x2 {& j; \进行解压的时候,需要输入密码
! ]! h8 g& m* q; F1 D) D' j$ F[root@centos6-vm02 ~]# rm -f test.txt
; ?$ V: `4 B2 W; `[root@centos6-vm02 ~]# unzip test.txt.zip
$ U* W9 A6 Z' B5 iArchive: test.txt.zip1 c' e7 r4 n+ l9 l s4 D0 P
[test.txt.zip] test.txt password: . e! K \7 e4 Q! R( X. B
extracting: test.txt
; }0 K0 G$ |/ b( t. [[root@centos6-vm02 ~]# cat test.txt
, r, d$ m( p& G+ _ h( Tthis is a test!!!
! _2 S+ ?' R A" X9 `. W2)文件夹加密, f+ j# T7 m! }4 M1 E
使用命令"zip -re dirname.zip dirname"即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的。
: l$ x# ?) B9 S8 O4 g下面开始对目录进行加密9 B% S8 M7 g3 [5 v/ W
[root@centos6-vm02 ~]# mkdir dirtest# `! X Q. Z+ q+ n
[root@centos6-vm02 ~]# cat dirtest/haha.txt : C! e3 L7 ]. m( o
this is test of dir!!!
0 N+ [4 N) m4 k5 j$ M1 m4 o2 F[root@centos6-vm02 ~]# zip -re dirtest.zip dirtest
5 S. ^0 n u5 k* V; d8 tEnter password: 7 W! J: O; J1 C# D; r2 K: _
Verify password:
' \$ o* |1 U" a$ N adding: dirtest/ (stored 0%)- K; ?# n. ]- Y4 N, t; L9 I6 Y; y
adding: dirtest/haha.txt (stored 0%)5 A2 y, i0 A7 I! [" k
解压目录时需要输入密码
! S& [6 H% w6 f' t4 V5 b[root@centos6-vm02 ~]# rm -rf dirtest
* y* d- e# `* D. p b[root@centos6-vm02 ~]# unzip dirtest.zip 4 p3 G0 d& K& n
Archive: dirtest.zip6 ]. U& B) o0 p4 t
creating: dirtest/
6 y( k6 N1 W5 O' q[dirtest.zip] dirtest/haha.txt password:
- N- S9 w2 p& U extracting: dirtest/haha.txt
* `6 i' K, {: X, N[root@centos6-vm02 ~]# ls dirtest
/ _- l _$ T- z& s5 x5 yhaha.txt; S3 M! b* ]& \# i3 {& H) {- I5 {
[root@centos6-vm02 ~]# cat dirtest/haha.txt - m+ u5 k: Z' D* v8 m: [; u7 Y
this is test of dir!!!
7 V* ^5 M @2 l方法六:GnuPG加密
! X8 N- {( F( XGnuPG的全称是GNU隐私保护(GNU Privacy Guard),常常被称为GPG,它结合了一组加密软件。它是由GNU项目用C编程语言编写的。最新的稳定版本是2.0.27。在如今的大多数Linux发行版中,gnupg程序包都是默认随带的,所以万一它没有安装,你可以使用apt或yum从软件库来安装它(yum install gnupg)。注意:gpg只能对文件进行加密,对目录则无法完成加密!
6 _. n# n8 Y! f( O下面开始使用GnuPG方式对test.txt文件进行加密
, h0 \2 z( m6 Z C& a R. e& e[root@centos6-vm02 ~]# cat test.txt
, {* q, {! F# ?& nthis is a test!!!) L( ~* ?- X+ W) m
[root@centos6-vm02 ~]# gpg -c test.txt
/ P# @. }4 Z: V% R- a9 h+ ?can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory //这个信息可以忽略
* P" J4 F9 S! G% p8 @4 f6 ?注意:如上加密的时候,会弹出来一个对话框,要求Paraphrase输入两次密码,对这个特定的文件进行加密。4 R6 Y- s& D. M7 L9 e9 u8 }
一旦运行带-c选项(完全使用对称密码算法加密)的gpc命令,它会生成一个文件.gpg文件。
0 [# y/ }; R7 {8 j7 e c) l[root@centos6-vm02 ~]# ll test.txt*
; W& X6 o) G" ~- A4 L-rw-r--r--. 1 root root 18 Jan 4 10:08 test.txt7 D& b. u1 D- `/ Q, W2 A
-rw-r--r--. 1 root root 61 Jan 4 10:04 test.txt.gpg
' J1 h# g! p: _2 i7 U, @2 }对文件进行加密后,最好将源文件删除!不要再保留源文件了!( C1 J9 I P7 ?" M: f
[root@centos6-vm02 ~]# rm -f test.txt$ l' n4 F9 J5 z* x# O8 m
文件解密操作。 w& K5 n2 U8 ]3 X! y' j1 |
注意出现Paraphrase提示时,需要提供加密时输入的同一个密码才能解密
0 y. P9 u; e5 p: g6 B8 j0 _/ w[root@centos6-vm02 ~]# gpg test.txt.gpg
. q& R3 A7 B3 Zgpg: 3DES encrypted data
& Z7 P ]: ]0 A K+ o1 B/ b9 tcan't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
; l/ N5 V. I3 I9 [/ Igpg: encrypted with 1 passphrase
0 b! M' A. n# G' t( fgpg: WARNING: message was not integrity protected4 Y w. c- c+ I, a
[root@centos6-vm02 ~]# ll test.txt*; I6 s& U+ c8 A
-rw-r--r--. 1 root root 18 Jan 4 10:08 test.txt
, k; f5 p$ y/ O6 a2 O. c1 i n-rw-r--r--. 1 root root 61 Jan 4 10:04 test.txt.gpg9 E$ u* T4 Q* }3 D) n$ }
[root@centos6-vm02 ~]# cat test.txt, R ~) c) k3 O* }0 c/ d7 B. f
this is a test!!!: ^4 |$ ]% [3 ~
二、对字符串进行加密/解密方法 , p( s2 c9 s8 C2 S& t! t, q
Linux系统下自带的工具base64可以对字符串进行加密和解决,一般是从标准输入读取文件内容,base64编码并打印到标准输出!
, \. E) U$ w2 p5 E) O; s使用"base64"或"base64 -i"命令进行字符串加密操作8 N* Z3 l3 [. z: o( k) O
使用"base64 -d"命令进行字符串加密后的解密操作
2 ~4 L: j) f" O如下对字符串"wang@123"进行加密操作:$ J% Y5 U. d1 l- H. d4 @
[root@ss-server ~]# echo "wang@123"|base64! W; x& q3 |% {! q9 |8 O% f
d2FuZ0AxMjMK- E8 K. ? p7 o# s8 h/ e; L
[root@ss-server ~]# echo "wang@123"|base64 -i. U& x/ P" _) z$ k V( a5 I
d2FuZ0AxMjMK2 o7 X" f! j/ B1 j& j& k2 ?; Y
对上面加密后的字符串进行解密操作
' p0 N& S E& y. u[root@ss-server ~]# echo "d2FuZ0AxMjMK"|base64 -d! N) [3 v) Q) P) S/ Y7 Y" E% G, \* [( f
wang@123
8 x" D* p0 I( |6 o9 u[root@ss-server ~]# echo "wang@123"|base64 -i|base64 -d3 u' W ~1 I, g# j
wang@123 M( T) h7 h4 ?, @" E. y
比如,有时为了安全考虑,需要隐藏tomcat版本,这时可以选择将tomcat版本进行加密. P, b0 e* e' m6 k
首先查看tomcat版本(在RELEASE-NOTES文件中)2 Z. P7 c/ ^$ b. j: K; S
[root@ss-server ~]# vim /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES
1 q9 n( c& U/ U, {% _8 N' E........& C% W, y: Q( ]6 E5 G) n' `# l
........
& T& C$ Z+ w# o4 F. i1 h7 I: m Apache Tomcat Version 8.5.43
% C8 H% _; Q4 g+ U% n# J Release Notes* a) m e1 @: h/ i! i+ [/ {, b
获取tomcat版本号
9 ?$ X' z" V3 Y" `1 I[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'6 R- Q9 n9 h4 Q$ v3 H# I
8.5.43
; Y4 p; L' B4 J将tomcat版本号加密5 L g$ r, t- A \! m0 k# I, x
[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i) k+ R" T3 b" w
OC41LjQzCg==
/ { d6 v* E" P* X+ ~$ `替换tomcat版本号为加密字符串
2 O1 Y3 \, v9 l" c[root@ss-server ~]# TOMCAT_VERSION_OLD=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}')
{) X; L( a& Q4 w4 p0 m. k! B[root@ss-server ~]# TOMCAT_VERSION_NEW=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i)+ ]. @: G4 ~' M
[root@ss-server ~]# sed -i 's/${TOMCAT_VERSION_OLD}/${TOMCAT_VERSION_NEW}/g' /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES+ Y; v# _! _: g; g: W
查看替换后的tomcat版本号
1 j: {9 j _1 v6 u[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'; y2 R, Q# U( T- B5 w2 l
OC41LjQzCg==
, ^* K/ m3 t4 \7 f) a0 M5 e+ g===================================================================================0 p- ^7 f' r- `# I& C* g7 Z/ G
需要注意:1 a/ k7 K' q# |" m) W9 D: t
linux系统自带的base64工具有BUG,base64解码有时会莫名出现报错:base64: invalid input。
5 S E% }" A! C1 Z1 r1 u, G! i所以最好还是使用源码包编译安装base64:
- u. Y+ C: h: g3 Y ?: v2 m' H. e[root@ss-server ~]# wget http://www.fourmilab.ch/webtools/base64/base64-1.5.tar.gz: m0 z* m2 G/ [) v
[root@ss-server ~]# tar zxf base64-1.5.tar.gz$ U3 O) ?+ `- g; O- P
[root@ss-server ~]# cd base64-1.5 r: v! M r4 M
[root@ss-server base64-1.5]# ./configure
! B$ O, W5 f( g8 e+ K[root@ss-server base64-1.5]# make && make -n install2 `9 ?2 }, @( {, |9 D- j
[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i
$ a, U2 j1 [5 B5 pd2FuZ0AxMjMK9 m N* V3 d u8 C' i9 J
[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i| ./base64 -d
, T0 L4 G m& c% N$ Bwang@123/ ^2 E0 c+ u* Q: F( j
& l; A; W) A6 w! V4 }5 |
|
|