|
|
一、对文件进行加密/解密方法
( O I+ X! }) R* k方法一:gzexe加密& X& k# d8 r; c
这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。示例如下:- A4 a, }2 B! X: Z$ _! ?
[root@ipsan-node03 ~]# echo "hahahaha" > a.txt6 c, v. n) G6 C( q4 N9 g8 B
[root@ipsan-node03 ~]# cat a.txt * @ L: t' M: m( P& b
hahahaha
" b8 F( {0 x$ U& J b# b+ @[root@ipsan-node03 ~]# ls a.txt
. G/ \- w, N* _3 x8 r. ~1 Fa.txt
6 u2 q% _2 z c% B2 ?[root@ipsan-node03 ~]# gzexe a.txt
) e# f# R* F5 L0 J6 @. Ea.txt: 22.2%
1 r: {' z6 @% ]6 z[root@ipsan-node03 ~]# ls
- L% K4 C6 ?" s3 h, h. ^a.txt a.txt~ + H0 i7 |5 B% ~6 B1 D* m3 E
gzexe方法会把原来没有加密的文件a.txt备份为a.txt~ ,同时a.txt文件变成了加密文件(即变成了密文)' U3 X! D; l9 |% t, T" H) Y
[root@ipsan-node03 ~]# cat a.txt
_( h, {4 Y! V쏎5 E- {* P. x0 |2 D- C% W* e
* ~' B% ]2 ^3 N9 N9 E$ ^[root@ipsan-node03 ~]# cat a.txt~
* u9 B& h: g# J+ `hahahaha
; X* a; c5 C9 z* t6 x/ ^通常使用gzexe加密后,会将备份文件(这里指a.txt~)删除2 l- e' s. o/ f3 Y
[root@ipsan-node03 ~]# ls
& |; k" J0 U" N) e5 Pa.txt a.txt~
, `, @6 X+ G3 Z7 P: ~$ p[root@ipsan-node03 ~]# rm -f a.txt~$ A' J9 A3 r( _& r1 ]
[root@ipsan-node03 ~]# ls4 U5 g- Z, M4 n% R8 Z/ {1 ^0 R
a.txt/ B" k- Y- a" v7 b
使用-d参数进行解压操作
8 h0 a8 u5 p9 e4 ^[root@ipsan-node03 ~]# gzexe --help
/ y5 O- \' u1 Q3 i0 CUsage: /usr/bin/gzexe [OPTION] FILE...8 j- C7 m ~4 F8 y
Rename each FILE with a compressed version of itself, renaming FILE to FILE~.
8 G6 R3 ?9 s" i, O6 H- p! ~ -d Decompress each FILE instead of compressing it.
. _' Y# Y' H9 G. { --help display this help and exit
8 w0 ?' l2 V7 P7 d --version output version information and exit
7 i& l, |/ `) U( x% B+ W+ O! I2 \Report bugs to <bug-gzip@gnu.org>., O3 ` M. Q5 ^0 X2 N6 z
解压之后的文件a.txt内容就会还原回来,同时也会将之前的加密文件变成a.txt~,同样,通常也会删除这个a.txt~的备份文件. f' B0 k& c, x# |- x
[root@ipsan-node03 ~]# gzexe -d a.txt
. I3 n5 `6 y0 L( b[root@ipsan-node03 ~]# ls9 C2 D, n8 K' a( p. U
a.txt a.txt~
1 \6 ?; b8 v0 _0 z. g[root@ipsan-node03 ~]# cat a.txt8 W6 V2 ?8 R8 ~8 k! g. ~# b
hahahaha
9 v6 x! X( b* ]5 l; ~
+ T2 l9 d; I* N3 S4 F3 g( S
3 G+ n, j4 i4 ?4 w" u' H[root@ipsan-node03 ~]# rm -f a.txt~
2 p6 g8 D! J8 ][root@ipsan-node03 ~]# ls
+ C2 t( _& t: D. U: u2 aa.txt
1 c: \5 G, ]7 b' g$ x方法二:用tar命令 对文件加密压缩和解压
( i+ I: l/ o. z/ `[root@ipsan-node03 ~]# ls, i3 L! j# o: C1 J
test.txt
5 V9 s% x: }+ y1 \. m[root@ipsan-node03 ~]# cat test.txt. ^6 `: F# z% {+ Z& {
hahahaha% j; }: {# L7 b
heiheihei+ P2 }( j2 p$ a9 B
" f. B1 h( ]0 u' J1 i如下命令是对filename文件(test.txt)进行加密压缩,生成filename.des3加密压缩文件,123@123为加密的密码
6 S3 o) R- w! q& T% S! y# L& R( j[root@ipsan-node03 ~]# tar -zcf - test.txt |openssl des3 -salt -k 123@123 | dd of=test.txt.des3
; T! z8 W4 j' Z' M4 \0+1 records in) Q9 M6 x3 ~8 a1 k7 D$ i$ G7 M
0+1 records out
5 _2 a$ L4 W9 [4 A0 ?0 L152 bytes (152 B) copied, 0.00333366 s, 45.6 kB/s
- o. y0 v M' e4 ~( M7 Z0 F8 M2 t4 M---------------------------------------------------------------------------------------------------------4 Q: z3 h0 z. N" r! K7 \9 S; R/ a
也可以将/mnt目录下的所有文件全部加密压缩2 T. `) e0 j9 {# k b4 X8 x" u
[root@ipsan-node03 ~]# tar -zcf - /mnt/* |openssl des3 -salt -k 123@123 | dd of=test.des3
9 j9 q! u$ e, I或者根据匹配规则进行加密压缩
' R# V! V* ~5 g# w[root@ipsan-node03 ~]# tar -zcf - /mnt/pass_* |openssl des3 -salt -k 123@123 | dd of=test.des3' P' k0 L7 Y( v; v! @1 i
---------------------------------------------------------------------------------------------------------* K# s8 F2 \. o9 V: f. d
4 g q9 ]% x6 D! n% E* i2 F通常加密后,会将源文件删除
8 L; j6 w/ c7 c3 X* j0 x# d+ R[root@ipsan-node03 ~]# ls
6 S5 l6 O7 ^% o- T) c D6 Q% ntest.txt test.txt.des33 t; f2 G Y9 C% z) ]
[root@ipsan-node03 ~]# rm -f test.txt, \2 ~7 w( f+ M" W0 L% b. a7 i
[root@ipsan-node03 ~]# cat test.txt.des3
# v) i* }3 g, [: I$ w1 e# z3 i, ]6 Q. X5 R' ^ j( l0 O9 `6 M
解压操作:
' j& s! I4 X* w$ v[root@ipsan-node03 ~]# dd if=test.txt.des3 |openssl des3 -d -k 123@123 | tar zxf -6 @5 O! g T) d
0+1 records in
2 Z- v: A% q! S0+1 records out U5 O. u, K/ J6 K3 `) F# R
152 bytes (152 B) copied, 4.5873e-05 s, 3.3 MB/s
' b1 o# D. o ^6 }7 ~ # X4 q( Z6 o7 G2 Y- r: @
[root@ipsan-node03 ~]# ls* J8 F5 p* x3 j! b1 t6 Y
test.txt test.txt.des3
- s% [1 m Z7 r# M: c- _/ J[root@ipsan-node03 ~]# cat test.txt
6 |- u. e' U, s Xhahahaha
- c: K( X# D! o' jheiheihei
" L! O/ y. @1 l6 L ' I/ N! ]' b* Z# f( [# W
注意命令最后面的"-",它将释放所有文件,
; R% i! N- l! B& H0 x( ~2 S$ k. h9 o-k 123@123可以没有,没有时在解压时会提示输入密码
+ ?, w+ E% O9 P9 @/ v' B方法三:结合Tar和OpenSSL给文件和目录加密及解密
+ l; Z: y6 F1 L/ u* s$ H' J$ b当有重要的敏感数据的时候,给文件和目录额外加一层保护是至关重要的,特别是当需要通过网络与他人传输数据的时候。基于这个原因,
# H2 F$ O" z) X8 y可以用到tar(Linux 的一个压缩打包工具)和OpenSSL来解决的方案。借助这两个工具,你真的可以毫不费力地创建和加密 tar 归档文件。
: {% q5 C2 g H8 N( ~6 G1 t下面介绍使用 OpenSSL创建和加密 tar 或 gz(gzip,另一种压缩文件)归档文件:
: `3 ]* Q- k7 k' H7 ?; n牢记使用 OpenSSL 的常规方式是:
' r4 ~! m5 L* q$ t6 J# openssl command command-options arguments
' ` ^+ V7 e' e/ g6 k/ V- D' g示例如下:
9 F, n8 L( W- i, h5 H[root@ipsan-node03 ~]# cd /mnt/' Z% ] R- o0 _3 j9 w, o# U: N
[root@ipsan-node03 mnt]# ls, h; r' @& _1 _
[root@ipsan-node03 mnt]# echo "123" > a.txt
5 ?. W9 `' w7 T. S% T5 E# ~% Z4 p[root@ipsan-node03 mnt]# echo "456" > b.txt! H" H! [/ `! }/ `
[root@ipsan-node03 mnt]# echo "789" > c.txt
; p& G' P7 t! e _* V[root@ipsan-node03 mnt]# ls
3 D! e( X/ @& |+ R x5 ua.txt b.txt c.txt
" w8 {" {7 f+ M# |' U2 R4 w! M现在要加密当前工作目录的内容(根据文件的大小,这可能需要一点时间)6 Q3 Q- s/ L2 ^% d3 q4 d# N5 p
[root@ipsan-node03 mnt]# tar -czf - * | openssl enc -e -aes256 -out test.tar.gz
0 O2 H" ?: E( _* P: S: W5 zenter aes-256-cbc encryption password: //假设这里设置的密码为123456
3 |; m/ e% I6 p2 i, UVerifying - enter aes-256-cbc encryption password:7 d4 o1 e" w0 G7 M! V+ M
上述命令的解释:
: b7 t/ N6 R/ U! c6 e! z+ ^+ Nenc 使用加密进行编码
/ Y. G& V' p. f-e 用来加密输入文件的 enc 命令选项,这里是指前一个 tar 命令的输出' ~* Q( Q' f3 `; k/ c
-aes256 加密用的算法
/ `9 V1 }) n* g8 D/ `3 R: k* z-out 用于指定输出文件名的 enc 命令选项,这里文件名是test.tar.gz" `2 i+ ~7 d- y6 G5 X* P
[root@ipsan-node03 mnt]# ls
7 m5 g3 `# y ka.txt b.txt c.txt test.tar.gz7 G: @/ c% |+ n5 E" y3 x
[root@ipsan-node03 mnt]# rm -rf a.txt 6 ^% K4 c: e5 }# q: J
[root@ipsan-node03 mnt]# rm -rf b.txt
( @2 I/ p7 \9 \/ o[root@ipsan-node03 mnt]# rm -rf c.txt 5 J& y6 q4 e K0 V
[root@ipsan-node03 mnt]# ls- l! @- W! g$ w* L% d
test.tar.gz- C) q9 p4 ~4 X# k' r1 e, \
对于上面加密后的tar包直接解压肯定是不行的!
4 s% E/ v% g! K8 E: E[root@ipsan-node03 mnt]# tar -zvxf test.tar.gz 0 r3 B0 D$ z& C+ {( R4 m# E) L+ W
gzip: stdin: not in gzip format
0 S. E( @* f4 Y/ V4 u) q' Ftar: Child returned status 12 c. u- c+ @8 z( L
tar: Error is not recoverable: exiting now7 j, G3 d$ z6 |! U! o
要解密上述tar归档内容,需要使用以下命令。8 v; y( k4 M: w' t4 [
[root@ipsan-node03 mnt]# openssl enc -d -aes256 -in test.tar.gz | tar xz -C /mnt/% G. l1 D1 I% b3 I1 U8 }2 E) T
enter aes-256-cbc decryption password:! s+ T `; K$ b3 Q* y* E( ^
[root@ipsan-node03 mnt]# ls
* T$ w9 i; X7 z& N/ b8 Ka.txt b.txt c.txt test.tar.gz1 `; D( H( S0 K( {2 {
上述命令的解释:! }( o* Q5 B6 i
-d 用于解密文件
3 B- k. N( e/ [0 }* v1 _-C 将加压后的文件提取到目标目录下9 e5 E0 u. ?. a: i7 Z
当你在本地网络或因特网工作的时候,你可以随时通过加密来保护你和他人共享的重要文本或文件,这有助于降低将其暴露给恶意攻击者的风险。
c+ o6 E8 y! k- @( C5 U1 v方法四:shc加密(仅仅对shell脚本加密)
' Q& S+ y+ K( H3 N8 \" Y sshc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、
, r" f5 X* ~* o1 D! s- f( O% Y密码等不希望公开的问题。
( ~# d4 _0 ], p, ^6 A2 E * o; n3 Z O. l7 K, X
如果你的shell脚本包含了敏感的口令或者其它重要信息, 而且你不希望用户通过ps -ef(查看系统每个进程的状态)捕获敏感信息. 你可以) N: ^% b) c/ Q7 _6 Q x
使用shc工具来给shell脚本增加一层额外的安全保护. shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执
, o5 m4 B |3 m$ R7 G6 r行文件(支持静态链接和动态链接). 该工具能够很好的支持: 需要加密, 解密, 或者通过命令参数传递口令的环境.. D/ h, Y# e4 n% @. p& A
7 P( A* O" k9 J9 c6 Q) a+ nshc的官网下载地址:
8 Q+ k( q0 x0 `' vhttp://www.datsi.fi.upm.es/~frosal/sources/
2 d5 C' C$ ~3 A! d6 { r v/ _
; H3 R; D" q" b4 w* p* _安装方法:' W& z7 Y* |# o, @' G o# y5 D- x
[root@ipsan-node03 ~]# cd /usr/local/src/5 z/ `9 E- Q+ i8 Z h
[root@ipsan-node03 src]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz4 b7 C. ?9 d( ?. h; m
[root@ipsan-node03 src]# tar -zvxf shc-3.8.9.tgz
+ | K! ^% o% Q6 _ k[root@ipsan-node03 src]# cd shc-3.8.98 u4 T6 ?) b# @/ g. ~) z+ P
[root@ipsan-node03 shc-3.8.9]# mkdir -p /usr/local/man/man1
; g3 M) R: F5 S; W n这步是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;/ f( n, C1 F: O& [8 f1 a
将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装1 A( |: b6 E3 n! Z8 P
2 `5 J1 l7 ^+ E# ]
[root@ipsan-node03 shc-3.8.9]# make install4 C$ X) q5 q5 L- g% a0 ^; a
这是要回答yes或者y,不能直接回车,否则会报错$ |8 H6 F+ C' i% j/ j. h& g6 B
- B* o5 U$ U1 y: k. z4 N需要注意的是,sch只能能shell脚本文件进行加密,其他文件都不可以!: N' w1 w) K7 b" M
" l# H- y0 V. {- e2 N @# f8 M/ G
sch加密使用方法:4 p0 [2 H, K1 b/ F" W
"-f"选项指定需要加密的程序
# b7 G/ l3 Y1 u% c[root@ipsan-node03 ~]# ls
& g+ y9 l0 {! W |8 X7 }text.sh' N$ L& H# m/ w8 B
[root@ipsan-node03 ~]# cat text.sh) H' Q2 C5 y+ q8 q& b7 }
#!/bin/bash
8 r8 `# _9 X9 @# y% i7 O( Recho "hahaha"8 p" P1 d, {0 G, e
[root@ipsan-node03 ~]# shc -r -f text.sh
* @; c8 }8 R: I4 v4 E[root@ipsan-node03 ~]# ls
$ \4 }# o2 {. e+ o* t# C3 c+ Ftext.sh text.sh.x text.sh.x.c! ]* T2 Q/ y9 o/ l
; W6 k1 L% [% x7 w. g
注意:要有-r选项, -f 后跟要加密的脚本名。
) _' I1 F, L+ C. C* E运行后会生成两个文件,script-name.x 和 script-name.x.c
7 h; a/ J; Y% r+ `# c; Jscript-name.x是加密后的可执行的二进制文件.2 i' w1 u( p1 I$ x( n
./script-name.x 即可运行.: N: |% s7 y6 P4 `) g5 s: o3 p
script-name.x.c是生成script-name.x的原文件(c语言), L3 S) g+ @+ ~% P3 K2 Q, Z
[root@ipsan-node03 ~]# ./text.sh
+ o% Q h+ V" x+ Z- yhahaha+ A$ U5 z2 A. N( Y% Z
[root@ipsan-node03 ~]# ./text.sh.x
. d2 P. ~2 k! z7 ]' chahaha; D6 I% S/ q* |+ l p2 B
' c/ v& X% t1 A* g6 b$ N7 B \1 S
通常从安全角度考虑:, K7 h. @, k: R3 J* X. v& Z
使用sch命令对shell脚本文件进行加密后,只需保留.x的二进制文件即可,其他两个文件均可以删除!
" R0 S, \' n# i9 y[root@ipsan-node03 ~]# ls
6 h1 s+ C) m& Stext.sh text.sh.x text.sh.x.c# e* a( E5 u8 G; Z
[root@ipsan-node03 ~]# rm -rf text.sh+ @5 [, }8 l4 W* b+ l, ]
[root@ipsan-node03 ~]# rm -rf text.sh.x.c+ [3 O$ Z; e6 A5 P7 T" A4 P
[root@ipsan-node03 ~]# ls; h5 C4 u+ f3 J) v% _
text.sh.x) I6 v1 m3 d: d* K" S+ n: p
[root@ipsan-node03 ~]# ./text.sh.x
1 l2 h5 J8 y# A Ehahaha
q) I9 \" j$ D) u ^
" D ?& d; D; o- S0 x, J* o另外:
: {/ x4 r- G2 |2 s+ A1 tshc还提供了一种设定有效执行期限的方法,可以首先使用shc将shell程序转化为二进制,并加上过期时间,如:
V5 w" b+ [; E+ l. c3 U) P1 Y( \[root@ipsan-node03 ~]# shc -e 28/02/2018 -m "this script file is about to expire" -v -r -f text.sh
& e# M* d6 l7 k. g5 fshc shll=bash8 d9 P% l2 \9 I" v$ R! c: ]
shc [-i]=-c; M* {7 |' O4 H
shc [-x]=exec '%s' "$@"( N# X3 E+ S4 Z, P3 T
shc [-l]=4 K8 g& h8 d7 V- } ^4 z$ `5 f
shc opts=
" f3 W" ]& @5 P' _7 t3 _9 Z+ jshc: cc text.sh.x.c -o text.sh.x
9 B; k7 B, T' a; ^0 g4 bshc: strip text.sh.x1 I; O8 i" ^- E) c; Y8 t6 @( {
shc: chmod go-r text.sh.x: ]$ x4 Y( w/ h! T4 ?4 I% g( a6 I, ]
[root@ipsan-node03 ~]# ls- }- _3 h9 o2 n& l
text.sh text.sh.x text.sh.x.c- t1 C1 Y4 B" z3 K( `
5 g+ @; |. {& i5 w" ]# U解释:
1 L O$ L$ K" s-e:指定过期时间为2018年2月28日8 x% i0 [5 F/ Q2 Q( W3 l
-m:过期后打印出的信息;
, p$ F9 U) G0 d6 H" B- d' L-v: verbose
* R- s; Y) Y2 d7 [-r: 可在相同操作系统的不同主机上执行
/ T3 v1 Z( B+ a& ?# h$ Y: K-f: 指定源shell3 O4 Q# o: H# ^2 W, l! M0 O
" t, F% r+ m3 Q$ O n
如果在过期后执行,则会有如下提示:: C- O* e, ?3 y% m9 {
[root@ipsan-node03 ~]# ./text.sh.x
$ u+ N* c9 I5 `# C./text.sh.x: this script file is about to expire: Y! h4 t: e$ d( B& f9 K& w7 S# c
使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题!!+ B1 _1 \6 @+ b
- r" n3 p6 s* O' T3 R$ zsch的帮助命令:( c3 o8 Y5 X O3 C. g
[root@ipsan-node03 ~]# shc -help4 l' t' X& K. O+ {2 a
shc Version 3.8.9, Generic Script Compiler
" T+ R, p( ~2 s% [4 C. Z0 K( Jshc Copyright (c) 1994-2012 Francisco Rosales <frosal@fi.upm.es>+ s$ A5 P) |; w3 l) L: {
shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
& r2 e6 R( O$ g2 X- W Q 5 T- i9 ^ n% e* z$ k$ j5 r
-e %s Expiration date in dd/mm/yyyy format [none] (指定过期日期); a8 q7 q- }9 G( [7 {) `) r3 h
-m %s Message to display upon expiration ["Please contact your provider"] (指定过期提示的信息)* k- i' G, S, x, d
-f %s File name of the script to compile (指定要编译的shell的路径及文件名)2 O4 t- u, T( ^/ S+ G' l
-i %s Inline option for the shell interpreter i.e: -e: Z/ x) I, K$ `; e( q. b2 E
-x %s eXec command, as a printf format i.e: exec('%s',@ARGV);& a) B5 {5 d6 |2 U X% X
-l %s Last shell option i.e: --
v; |! J- o, k( g5 a -r Relax security. Make a redistributable binary (可以相同操作系统的不同系统中执行)% k$ T% C" }) _1 K7 p. r/ |$ h
-v Verbose compilation (编译的详细情况)2 s. z% P% d3 }( t6 j4 `$ R
-D Switch ON debug exec calls [OFF]1 \. l! g' \2 F
-T Allow binary to be traceable [no]- }1 b5 Q- P& j, ?$ [
-C Display license and exit$ K* x9 F, o0 w$ Z T
-A Display abstract and exit2 c* k0 {8 q3 V# \" e
-h Display help and exit: T ^3 w0 U8 z8 l' g9 _- Z; y! Y' w
d# S( s( i y8 W, K- i2 H
Environment variables used:% ]! u6 E/ f0 @ d
Name Default Usage
" F% i: Y9 r3 C% }. q6 T CC cc C compiler command
. N2 k2 V9 {* Z; s/ W CFLAGS <none> C compiler flags" F H" R/ ^/ w# I3 x( t' h! o
- T/ J1 U2 f0 f# n1 p$ }# w- R
Please consult the shc(1) man page.
; A' w w! h1 z6 R0 b/ V/ \" C $ u$ }! I1 m% x! p
说明:
' h( x# ]" ?3 W* u( _- o经测试,相同在操作系统,shc后的可执行二进制文件直接可以移植运行,但不同操作系统可能会出现问题,
0 N8 F( u- V; K1 I W4 R4 \比如将上面的test.sh.x的二进制文件在CentOS6.9上加密后移到redhat as5u4上不能运行,出现"Floating point exception"错误提示,
; s' w8 a/ R) ~但移到另一台CentOS6.9上直接运行没问题。
9 a$ }4 ?' \* k# d, U2 Y方法五: ZIP加密) j2 y3 s5 p$ ?) D) c& {& x
1)文件加密' G0 _+ b4 K, o3 G& O+ q9 P
使用命令"zip -e filename.zip filename" 即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的+ l) c8 [# P4 K+ d: u7 |8 _4 K; G
下面开始为test.txt文件进行加密1 g$ q( }& l4 o9 g, {
[root@centos6-vm02 ~]# cat test.txt ' g3 r# ?- t* p) J0 T8 f
this is a test!!!1 W0 S8 M3 c- Z' `7 G& ~
[root@centos6-vm02 ~]# zip -e test.txt.zip test.txt //如下进行加密操作时,需要输入两次密码- a5 ^7 r: |& G; ?" w; z
Enter password: % a4 r' w; W$ X* j
Verify password:
( a, ^7 m6 m' z P' U adding: test.txt (stored 0%)
. I" J8 ?6 `# d: \[root@centos6-vm02 ~]# ls! g' l% x* M& O
test.txt test.txt.zip$ b5 H2 c" k- w# A; q! Y% v5 L2 P
进行解压的时候,需要输入密码
* B: l* D# o: b8 M+ l5 V[root@centos6-vm02 ~]# rm -f test.txt; `$ b! y- A0 k% T) n
[root@centos6-vm02 ~]# unzip test.txt.zip 6 v; {2 U, Z1 _: [
Archive: test.txt.zip
: }/ N/ s" |! ]! ?8 T[test.txt.zip] test.txt password:
, G* y6 D+ |! u$ M extracting: test.txt
6 v, Y" H: h" @8 |5 d9 q* }5 n& p$ r[root@centos6-vm02 ~]# cat test.txt
* K8 } i. K7 t5 s# @& d6 Lthis is a test!!!
- x U' U* W$ U5 p# p @2)文件夹加密+ B. W) }) q" f+ H
使用命令"zip -re dirname.zip dirname"即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的。
# T3 G/ n& i: c# E+ {, ?* t下面开始对目录进行加密
2 c1 _" O" v3 t+ m: ~4 l[root@centos6-vm02 ~]# mkdir dirtest8 a0 L9 R) `, E! n! K
[root@centos6-vm02 ~]# cat dirtest/haha.txt 8 `: J/ f$ T8 U! B! V U5 D6 D
this is test of dir!!!
! s% D: R* s! i# R, {& _[root@centos6-vm02 ~]# zip -re dirtest.zip dirtest
$ X! d7 C; M5 X, `7 p# ~/ z+ \7 \Enter password: ; Q. `4 D# W9 a$ s4 A* m
Verify password: $ a4 B# o$ i! S7 C7 Y
adding: dirtest/ (stored 0%)
: S: ]& _+ R' Y adding: dirtest/haha.txt (stored 0%)
% ~$ S, E! t( G' d. z解压目录时需要输入密码/ j; Z5 B9 A( @0 _+ j
[root@centos6-vm02 ~]# rm -rf dirtest: L/ Z. V- I) U0 l# G% D
[root@centos6-vm02 ~]# unzip dirtest.zip # ]( V' h( q+ y# U
Archive: dirtest.zip2 b; k o( {! w" \5 b
creating: dirtest/
- z4 z J7 o, e: p[dirtest.zip] dirtest/haha.txt password:
- v8 e# r/ W8 H" s extracting: dirtest/haha.txt
0 u$ P* _$ S: x5 ]$ @( V[root@centos6-vm02 ~]# ls dirtest) o( _$ A) B5 h' b" \6 D; S3 e- \0 p4 A
haha.txt. g+ ^" F. g) }6 ?9 \- S! @
[root@centos6-vm02 ~]# cat dirtest/haha.txt
r) B( G3 t: ^" o2 ythis is test of dir!!!
, |6 K: m, K- n, A方法六:GnuPG加密
/ }2 u9 W2 k3 Z# j' }: PGnuPG的全称是GNU隐私保护(GNU Privacy Guard),常常被称为GPG,它结合了一组加密软件。它是由GNU项目用C编程语言编写的。最新的稳定版本是2.0.27。在如今的大多数Linux发行版中,gnupg程序包都是默认随带的,所以万一它没有安装,你可以使用apt或yum从软件库来安装它(yum install gnupg)。注意:gpg只能对文件进行加密,对目录则无法完成加密!
- k5 y. D* W- r下面开始使用GnuPG方式对test.txt文件进行加密- S* v. x( |: T7 Q, l, Y d p
[root@centos6-vm02 ~]# cat test.txt ; q! q! E" b! o9 L3 p, f, f
this is a test!!!
' w. Q% B- V# K D0 M1 I[root@centos6-vm02 ~]# gpg -c test.txt
3 o9 B& ], ^+ L0 A! y6 q1 M8 ]can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory //这个信息可以忽略
% @6 r" T7 d3 o3 W6 M4 I注意:如上加密的时候,会弹出来一个对话框,要求Paraphrase输入两次密码,对这个特定的文件进行加密。0 F; h" a$ ^% }& ^+ E0 ^9 m- r, ]5 i+ U
一旦运行带-c选项(完全使用对称密码算法加密)的gpc命令,它会生成一个文件.gpg文件。0 G1 y& y- u, m0 m
[root@centos6-vm02 ~]# ll test.txt*
' u$ c$ d5 q! z- J9 U-rw-r--r--. 1 root root 18 Jan 4 10:08 test.txt
5 D* ]2 G' H2 O, \9 {% t-rw-r--r--. 1 root root 61 Jan 4 10:04 test.txt.gpg
* s: I# L6 P. [6 v w0 B! H. k" ^对文件进行加密后,最好将源文件删除!不要再保留源文件了!
) f; V$ P3 N3 o+ N0 e[root@centos6-vm02 ~]# rm -f test.txt
5 Z- b1 r8 D4 m+ J! J* ^3 A5 J文件解密操作。 f) j e9 t% m9 `4 l" l
注意出现Paraphrase提示时,需要提供加密时输入的同一个密码才能解密
$ n: U8 L2 {# b; B1 K7 m# }/ s[root@centos6-vm02 ~]# gpg test.txt.gpg
& N6 t/ q, n6 dgpg: 3DES encrypted data/ A0 b8 R$ w: i. P, [
can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory! o& ]* a# e& v. Y! j: B4 |
gpg: encrypted with 1 passphrase
1 d* ^8 U8 {2 q) G j$ Mgpg: WARNING: message was not integrity protected
5 P( E7 m6 J2 X; O' m[root@centos6-vm02 ~]# ll test.txt*
8 A$ W6 w6 ^4 v% L* W-rw-r--r--. 1 root root 18 Jan 4 10:08 test.txt
) L6 q& k: M4 b e-rw-r--r--. 1 root root 61 Jan 4 10:04 test.txt.gpg% p0 R( O4 j: q8 Z9 }
[root@centos6-vm02 ~]# cat test.txt7 `0 ^! K# `9 S
this is a test!!!
) m% l' I* r# ^0 I3 r二、对字符串进行加密/解密方法 ( v. }* S/ O& X2 z" ^4 }0 W
Linux系统下自带的工具base64可以对字符串进行加密和解决,一般是从标准输入读取文件内容,base64编码并打印到标准输出!+ F# p+ u. ?/ K- k
使用"base64"或"base64 -i"命令进行字符串加密操作6 `5 l0 _, r6 P& Q
使用"base64 -d"命令进行字符串加密后的解密操作
) E' y4 t6 t3 H4 D1 Z' v如下对字符串"wang@123"进行加密操作:$ j ?) a" L% T2 @! }
[root@ss-server ~]# echo "wang@123"|base64
1 C! K6 `7 w3 md2FuZ0AxMjMK7 h" ]2 ]1 u+ g" @) T
[root@ss-server ~]# echo "wang@123"|base64 -i0 _+ y, o1 H/ v
d2FuZ0AxMjMK
0 k$ b) W6 i: i* B- o对上面加密后的字符串进行解密操作
/ Q; D4 @/ Y" W4 _4 _! @1 L[root@ss-server ~]# echo "d2FuZ0AxMjMK"|base64 -d0 Y* B8 H; c6 X
wang@123" Q( L4 `6 z4 f3 J5 |% M
[root@ss-server ~]# echo "wang@123"|base64 -i|base64 -d# f* C6 s7 k: `" L$ d3 M, ?
wang@123
7 w3 a5 P7 r2 x2 h% M4 t( D比如,有时为了安全考虑,需要隐藏tomcat版本,这时可以选择将tomcat版本进行加密
" q2 T: z* I. t* I. ~1 w首先查看tomcat版本(在RELEASE-NOTES文件中)+ P# u: m6 c! x$ n+ c' H" U
[root@ss-server ~]# vim /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES ~- |0 Q) S* T- I" ?6 \+ b) l/ m* f
........
8 [& v* a# ]: A........( Q& |' w1 y, V% _4 h% o
Apache Tomcat Version 8.5.43
0 Z3 j Q7 _5 h/ P( o! k, Z7 { Release Notes4 p6 i5 C( @) M$ J( t1 P1 P, ?1 ?
获取tomcat版本号
) s# p6 h" t% T, o[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'
1 ?! o; H8 J# L& W4 k. N8.5.43
% c4 y: ]+ t. z; `& z将tomcat版本号加密. u; z) _9 m; [) k; I
[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i% K" S/ Z7 U3 Z) z
OC41LjQzCg==6 p: G* _0 w4 {
替换tomcat版本号为加密字符串# x6 K; D9 y; ^# j( @& g
[root@ss-server ~]# TOMCAT_VERSION_OLD=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}')
1 G+ `, S1 S" Z7 p[root@ss-server ~]# TOMCAT_VERSION_NEW=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i)
, b$ C( N4 D, f[root@ss-server ~]# sed -i 's/${TOMCAT_VERSION_OLD}/${TOMCAT_VERSION_NEW}/g' /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES
7 [) z3 ?+ S+ I6 W7 s查看替换后的tomcat版本号
: U6 ]5 s& t5 x2 w Z: b[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'1 @& T# i9 O4 t
OC41LjQzCg==
4 @+ y" d; S0 U( U- G2 P===================================================================================
" U @, o- w$ O U9 X; A& y, W需要注意:
5 ]. f2 _ z8 k8 R7 b0 Blinux系统自带的base64工具有BUG,base64解码有时会莫名出现报错:base64: invalid input。
: Q& @4 ?0 Y1 W" y1 V所以最好还是使用源码包编译安装base64:2 B' p& C; |2 @. y, ~
[root@ss-server ~]# wget http://www.fourmilab.ch/webtools/base64/base64-1.5.tar.gz W/ \4 G4 A' r& `- V% ^$ t
[root@ss-server ~]# tar zxf base64-1.5.tar.gz
3 \7 p* a- j+ x" j8 x6 }[root@ss-server ~]# cd base64-1.53 J0 l3 O- z4 D/ J( f9 T
[root@ss-server base64-1.5]# ./configure6 W- k6 Q. I3 @
[root@ss-server base64-1.5]# make && make -n install
& L( t0 ?3 R; ]& V0 J[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i
3 ~/ X0 Q4 Z$ z3 B/ j+ fd2FuZ0AxMjMK
7 w4 p. Z! a! t. k+ C8 d[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i| ./base64 -d
) {0 u3 Q7 q- o c) w+ \wang@123
% F% V0 D: U9 j8 I3 [; P1 v6 o; C" t6 |7 o
|
|