易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 2034|回复: 1
收起左侧

Linux系统下对文件和字符串 进行加密的方法

[复制链接]
发表于 2021-7-9 10:16:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
一、对文件进行加密/解密方法
2 t- i/ Z* `* W- R  f# F0 L4 z方法一:gzexe加密8 x9 Q" ^' B+ p4 A" [- f
这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。示例如下:/ ~( x; I. g/ m: M$ }+ R
[root@ipsan-node03 ~]# echo "hahahaha" > a.txt; _2 c% [% s8 b4 W
[root@ipsan-node03 ~]# cat a.txt & L  Y! z$ X2 ]& h
hahahaha+ E" `: M; C6 O$ O- u0 ]
[root@ipsan-node03 ~]# ls a.txt
/ Q  D: s9 `; v; r6 ]8 \$ Ea.txt& T/ z+ x6 L9 g5 Z5 c
[root@ipsan-node03 ~]# gzexe a.txt. y, H4 r' l! k
a.txt:    22.2%
+ d& x( Y5 D4 g' }[root@ipsan-node03 ~]# ls
6 u  C. e6 c! {! \- B) fa.txt  a.txt~  
; o% L: V" e) d9 V5 m3 Q$ kgzexe方法会把原来没有加密的文件a.txt备份为a.txt~ ,同时a.txt文件变成了加密文件(即变成了密文)" Q- k2 p8 u: N
[root@ipsan-node03 ~]# cat a.txt                                                                                           / b% j3 w$ \4 o( j

; K7 r. D  ^3 g; H- |
. Q4 \9 b' Z# a; h/ U* S[root@ipsan-node03 ~]# cat a.txt~. \6 w( a4 i6 P: s( h5 v+ c$ ^
hahahaha
7 G/ u- S( }/ K通常使用gzexe加密后,会将备份文件(这里指a.txt~)删除. m. q1 T0 m) T2 J
[root@ipsan-node03 ~]# ls% m, C5 z( |+ y  \; F2 D
a.txt  a.txt~  # i! i6 O# z0 f/ g% _
[root@ipsan-node03 ~]# rm -f a.txt~
6 x8 {8 |* R' j) C3 T4 u5 }[root@ipsan-node03 ~]# ls
) b6 f- u0 g8 `; ]a.txt
5 y) q% m" P* B: P使用-d参数进行解压操作
& F! i# }+ o2 Q2 @5 ?) r[root@ipsan-node03 ~]# gzexe --help
: n  l4 X9 h+ U$ X$ iUsage: /usr/bin/gzexe [OPTION] FILE...* x+ v7 |# |4 r3 J
Rename each FILE with a compressed version of itself, renaming FILE to FILE~.. q9 G3 k% c! `' _
  -d             Decompress each FILE instead of compressing it.& X. ?  C9 K: F0 a' K) P
      --help     display this help and exit
" a  G4 c! V) t/ \      --version  output version information and exit
' w1 w$ e" J2 B! n- J$ _; q( kReport bugs to <bug-gzip@gnu.org>.
1 h' i4 d5 J+ o解压之后的文件a.txt内容就会还原回来,同时也会将之前的加密文件变成a.txt~,同样,通常也会删除这个a.txt~的备份文件
5 v+ g# ]* q: a9 V* z2 w6 o[root@ipsan-node03 ~]# gzexe -d a.txt # F) ?6 N! M9 x9 l' h: f6 p5 w  s
[root@ipsan-node03 ~]# ls
* @. S/ c: C3 E6 ?a.txt  a.txt~  
0 P, u9 {; G! d' o! i& n5 d[root@ipsan-node03 ~]# cat a.txt
: f2 n$ g' T. o+ bhahahaha; c9 {3 J8 X2 s% v, r
( g" o" F4 E9 r% [  I5 o

9 x# T/ \( \$ ?+ R; x/ M$ m6 J4 [[root@ipsan-node03 ~]# rm -f a.txt~$ r$ C& x( `. R9 @
[root@ipsan-node03 ~]# ls( R& e  N. K) ]+ r) y! p
a.txt/ I8 o7 L, o( B9 _- ~
方法二:用tar命令 对文件加密压缩和解压0 s$ B" x9 {: n2 F& G. J: i) g
[root@ipsan-node03 ~]# ls9 g& n- M0 q5 A3 v2 d7 b
test.txt
' @' j+ I# P' C6 u[root@ipsan-node03 ~]# cat test.txt
; I' y7 e; X% R' Y, P: Xhahahaha
7 V1 D( q7 H8 Y: K. b: ]9 y0 {heiheihei
6 Y5 M. q. J/ Y( p: u9 P  
& w9 ]/ ?: R% d( A; E6 I* ?如下命令是对filename文件(test.txt)进行加密压缩,生成filename.des3加密压缩文件,123@123为加密的密码6 a6 y7 S/ T! I/ i- A
[root@ipsan-node03 ~]# tar -zcf - test.txt |openssl des3 -salt -k 123@123 | dd of=test.txt.des3
7 h- C/ p, D- o$ [0+1 records in
' H6 l& S; R0 z. @# H4 O* U% Q0+1 records out$ ~* j6 N5 \* G9 W' }7 l. w) ^  q* [
152 bytes (152 B) copied, 0.00333366 s, 45.6 kB/s" k2 m6 [5 c+ J! R) x- j
---------------------------------------------------------------------------------------------------------
  L' u1 Y+ h3 Y4 z$ D) B也可以将/mnt目录下的所有文件全部加密压缩
. R! ^( m. M# T[root@ipsan-node03 ~]# tar -zcf - /mnt/* |openssl des3 -salt -k 123@123 | dd of=test.des3
% K$ B$ T/ g5 q$ u* [; D或者根据匹配规则进行加密压缩2 C' Y# s8 y2 R3 q) _/ ?6 z
[root@ipsan-node03 ~]# tar -zcf - /mnt/pass_* |openssl des3 -salt -k 123@123 | dd of=test.des37 D  n8 D+ }. ]; _7 r
---------------------------------------------------------------------------------------------------------4 k/ o" R' B/ J+ S8 a" V' B0 T4 y3 Y
  
; U8 ~( D: _6 P- O0 i' F  R, q3 I通常加密后,会将源文件删除
3 T9 q' |( `9 i1 s+ x( b& e[root@ipsan-node03 ~]# ls
/ e& d2 }/ W$ ?9 w5 v7 `8 e5 Utest.txt  test.txt.des3; T9 f4 \8 H  d, x4 C6 b( y9 R# H
[root@ipsan-node03 ~]# rm -f test.txt2 g6 W! q: N' J8 v' q( Q/ b% h) O
[root@ipsan-node03 ~]# cat test.txt.des38 ]1 h% e, j% O" G

: B* t3 |: l' W- O; ~. y解压操作:
$ j2 a9 A2 N* p# ~[root@ipsan-node03 ~]# dd if=test.txt.des3 |openssl des3 -d -k 123@123 | tar zxf -
) i# t1 a" B: e0+1 records in0 o' O1 g2 q# W# J& s0 W: o
0+1 records out
$ q- s% n* n, f5 h. p% g+ C$ J152 bytes (152 B) copied, 4.5873e-05 s, 3.3 MB/s
" ]( t4 w4 w' G2 i- Y  a1 z3 k  
  E; k0 h" e# M0 f[root@ipsan-node03 ~]# ls
3 u6 \2 @$ @& n" k" i+ M6 i# _test.txt  test.txt.des3
7 s' s' g& U, c  m2 n[root@ipsan-node03 ~]# cat test.txt; ^6 L1 w  l5 I3 e1 e
hahahaha8 f  [; L: i# C3 F, T& ?1 l
heiheihei+ B1 F1 M2 n1 z, B9 }9 ?
  
* C, d' W3 S. n( h3 I' L注意命令最后面的"-",它将释放所有文件," j& T+ R" }" I/ o  B4 E) O& ]  G
-k 123@123可以没有,没有时在解压时会提示输入密码
' P# t3 u& p# Q- H* |, Q; o! X方法三:结合Tar和OpenSSL给文件和目录加密及解密
1 D5 J  C7 N! G当有重要的敏感数据的时候,给文件和目录额外加一层保护是至关重要的,特别是当需要通过网络与他人传输数据的时候。基于这个原因,3 t6 d: S+ ?" \
可以用到tar(Linux 的一个压缩打包工具)和OpenSSL来解决的方案。借助这两个工具,你真的可以毫不费力地创建和加密 tar 归档文件。3 M* \  b$ w6 r+ T8 \/ s6 v* T2 M
下面介绍使用 OpenSSL创建和加密 tar 或 gz(gzip,另一种压缩文件)归档文件:5 u( c$ {! [7 z; ^
牢记使用 OpenSSL 的常规方式是:
; n( z# ~. i4 }# openssl command command-options arguments6 S# g) C  S; I5 M! P6 i# n* A
示例如下:2 z5 i' g, e% x2 U
[root@ipsan-node03 ~]# cd /mnt/
+ V4 o' a1 s: a! ]# V. u; ~. M[root@ipsan-node03 mnt]# ls
, y" b7 R# a( d0 K0 ^+ y0 U& }[root@ipsan-node03 mnt]# echo "123" > a.txt
* M( F/ h. B+ {; @8 b6 P# F9 C[root@ipsan-node03 mnt]# echo "456" > b.txt
! |' X6 a' ^* ?  B* v" i1 D[root@ipsan-node03 mnt]# echo "789" > c.txt% K6 d/ _( A0 H
[root@ipsan-node03 mnt]# ls# [" Y/ D+ r) @0 n: x5 C! S2 P
a.txt  b.txt  c.txt
+ A+ R3 z/ Z# k& Y4 Z现在要加密当前工作目录的内容(根据文件的大小,这可能需要一点时间)
/ P$ |! d/ V/ k" X) A4 y) l[root@ipsan-node03 mnt]# tar -czf - * | openssl enc -e -aes256 -out test.tar.gz( [; z$ I: k- f) z
enter aes-256-cbc encryption password:                          //假设这里设置的密码为123456! H; J) o2 F9 i8 [
Verifying - enter aes-256-cbc encryption password:9 p5 D) o$ ~2 K7 G
上述命令的解释:
  ]/ m) |6 d% d! z' f) Fenc 使用加密进行编码- x4 J8 T& a2 \8 H4 M
-e  用来加密输入文件的 enc 命令选项,这里是指前一个 tar 命令的输出9 k3 d; `. T% ?% a( d
-aes256 加密用的算法3 [- _# o# T2 V& d: t0 G
-out 用于指定输出文件名的 enc 命令选项,这里文件名是test.tar.gz
5 J1 q& M2 m0 g* `# x[root@ipsan-node03 mnt]# ls
8 e& K, r  N6 m7 ^- v/ `: Ba.txt  b.txt  c.txt  test.tar.gz' S3 U% ?) j7 W  }# O" c
[root@ipsan-node03 mnt]# rm -rf a.txt ( j" }) f: A2 p$ E0 @* ^+ \+ w9 k
[root@ipsan-node03 mnt]# rm -rf b.txt 3 J( Z) b. O) H" |% R
[root@ipsan-node03 mnt]# rm -rf c.txt
7 ?$ I3 O0 d4 g[root@ipsan-node03 mnt]# ls
' ^4 }5 w4 c( q( u' o, `test.tar.gz  e- C1 M1 F) e0 ?; F* n
对于上面加密后的tar包直接解压肯定是不行的!
; g/ K# H- S& u4 u[root@ipsan-node03 mnt]# tar -zvxf test.tar.gz / u$ Z6 p" S+ h8 x! A/ D3 T! e3 [  g
gzip: stdin: not in gzip format
9 V& m* t% T- e- s) z7 j' N; Utar: Child returned status 1
1 k' a& w" X6 @8 xtar: Error is not recoverable: exiting now
/ O: N9 O7 d+ q要解密上述tar归档内容,需要使用以下命令。$ L& j- x: G! g* R, ~! w1 d
[root@ipsan-node03 mnt]# openssl enc -d -aes256 -in test.tar.gz | tar xz -C /mnt/% n' |# G4 `$ x6 Y$ f/ F: q& e
enter aes-256-cbc decryption password:. u4 X0 z* _5 N6 e( ]
[root@ipsan-node03 mnt]# ls
& X2 G- ^; I# N* O# G4 ^a.txt  b.txt  c.txt  test.tar.gz
/ a6 A% L1 z0 l4 b/ r* x( B上述命令的解释:
" i. ~1 k7 h% q$ J: F" X-d  用于解密文件6 k: p) G. y; B. X* O
-C  将加压后的文件提取到目标目录下8 |7 O( V: {& R+ |8 m3 k
当你在本地网络或因特网工作的时候,你可以随时通过加密来保护你和他人共享的重要文本或文件,这有助于降低将其暴露给恶意攻击者的风险。3 ^+ q- j+ e, d  t! ?, W% w
方法四:shc加密(仅仅对shell脚本加密)8 Z3 g2 a! }; K  |* x
shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、
# a7 ?( A9 p: J$ Q密码等不希望公开的问题。7 ?  d6 E, v( Y
1 _2 n8 R, i' W3 ~) `5 T) |
如果你的shell脚本包含了敏感的口令或者其它重要信息, 而且你不希望用户通过ps -ef(查看系统每个进程的状态)捕获敏感信息. 你可以
7 }2 c  J: L* a# P' B( m' v使用shc工具来给shell脚本增加一层额外的安全保护. shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执
( `% I0 }! B6 S行文件(支持静态链接和动态链接). 该工具能够很好的支持: 需要加密, 解密, 或者通过命令参数传递口令的环境.
- t; G' N; E( I5 P  E
  v- Y2 c* h2 B" e4 \! _/ Ushc的官网下载地址:  ( l8 j" i  a8 D& Z# z6 m
http://www.datsi.fi.upm.es/~frosal/sources/
6 k5 |  E6 }7 C! g9 `) P  t
/ T/ R8 O. l# `# P) Z安装方法:
7 l1 X" t- {4 {# L3 {, t3 c[root@ipsan-node03 ~]# cd /usr/local/src/# Q6 B1 y4 Z% f
[root@ipsan-node03 src]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
# U5 q- h8 @% ~( d4 @[root@ipsan-node03 src]# tar -zvxf shc-3.8.9.tgz# {7 j6 [; ~( ?% n
[root@ipsan-node03 src]# cd shc-3.8.99 v' o: l0 t1 z$ T* g* m3 h4 h
[root@ipsan-node03 shc-3.8.9]# mkdir -p /usr/local/man/man1  R: L3 s3 b; A9 O8 a
这步是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;" Q9 Y+ @' d, t- V& p7 k" d. U9 g7 w
将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装8 m) `! z, b! x, L. {2 t

" P9 q# I2 P) t8 K& O[root@ipsan-node03 shc-3.8.9]# make install- v3 j7 C! U% ]8 V- \
这是要回答yes或者y,不能直接回车,否则会报错* L  w( [0 J8 C( g

7 }' H& O; g5 B8 N) v' c% j需要注意的是,sch只能能shell脚本文件进行加密,其他文件都不可以!1 H/ D% y  X1 l2 |

9 P6 B6 b. M* _  f0 wsch加密使用方法:
# B) o4 ]& f8 X! Y1 y7 u% Y( ~"-f"选项指定需要加密的程序1 x! V3 T  m# _& ~; W
[root@ipsan-node03 ~]# ls, r( F- O' x3 ]4 E5 \! L
text.sh
+ d9 b7 w- p2 j- l9 R[root@ipsan-node03 ~]# cat text.sh& B; t7 O4 k$ ]) K" c
#!/bin/bash
& K2 r- z5 |/ g$ y! Zecho "hahaha"9 t1 Z7 Q; B. G' `: K
[root@ipsan-node03 ~]# shc -r -f text.sh
" V) j0 B8 h8 [$ b( t[root@ipsan-node03 ~]# ls
/ C( s7 r& g+ B1 _0 x/ qtext.sh  text.sh.x  text.sh.x.c" }5 ]8 s! A- e. h; P, V
4 f* F8 T; M5 Y7 N1 X+ t; h
注意:要有-r选项, -f 后跟要加密的脚本名。7 X3 c, f8 P) w7 T# o
运行后会生成两个文件,script-name.x 和 script-name.x.c4 K+ j  ?0 ^) a: _2 U* \/ }+ d
script-name.x是加密后的可执行的二进制文件.
9 p1 B3 E2 `1 y/ \" }9 C./script-name.x 即可运行.
9 }+ k0 o" _/ ]3 O+ bscript-name.x.c是生成script-name.x的原文件(c语言)1 d; G3 t5 ?! T% a0 g) r
[root@ipsan-node03 ~]# ./text.sh
3 |% P* ?8 j6 u1 v& S( Ahahaha
: y& x$ i) \0 o' D4 V' `[root@ipsan-node03 ~]# ./text.sh.x
/ a  A$ Z7 m9 n  K+ _9 l( zhahaha8 A2 m. [' ]7 N, S, T4 C

  C) |, N' }1 F* O7 z7 ^3 l通常从安全角度考虑:
! M8 Q# j2 b& O6 L9 a使用sch命令对shell脚本文件进行加密后,只需保留.x的二进制文件即可,其他两个文件均可以删除!
9 I4 q4 W( O6 f+ z( a1 V[root@ipsan-node03 ~]# ls. ?- I9 y$ l3 i& b
text.sh  text.sh.x  text.sh.x.c/ I, m2 _7 n5 A! k+ E: h
[root@ipsan-node03 ~]# rm -rf text.sh0 _4 |+ T6 \6 Y" @
[root@ipsan-node03 ~]# rm -rf text.sh.x.c& V: z+ A9 \) |5 a
[root@ipsan-node03 ~]# ls
$ s4 _# O3 j& y; I: M# ^text.sh.x, O& ^9 I2 p# R
[root@ipsan-node03 ~]# ./text.sh.x2 z% |( i- ]" m( g
hahaha# S: _5 y+ E2 [9 N' P
0 A" p# u9 F6 n% @$ |
另外:" Z; H' }0 K# }' a+ }: K5 v
shc还提供了一种设定有效执行期限的方法,可以首先使用shc将shell程序转化为二进制,并加上过期时间,如:
$ W; [$ P% M8 y' r$ Q4 n! p0 {4 g# E[root@ipsan-node03 ~]# shc -e 28/02/2018 -m "this script file is about to expire" -v -r -f text.sh; J' n  @+ M" Y! G
shc shll=bash
4 Q9 O7 |% @5 ?. C0 A! ishc [-i]=-c6 n+ ^4 K0 J: c) ?, o9 F
shc [-x]=exec '%s' "$@"
2 X4 U/ K; X4 M2 E( v7 x( ^, Cshc [-l]=9 {- T, F6 K3 i
shc opts=/ K% {9 g0 q+ s4 ^, Q3 r
shc: cc  text.sh.x.c -o text.sh.x
5 [; g! N9 S& P1 \9 xshc: strip text.sh.x
8 S7 a; c* b; V+ X9 Bshc: chmod go-r text.sh.x
- B$ W0 Z+ L5 L# p# j4 j[root@ipsan-node03 ~]# ls
1 ~4 X7 U% `, |5 I$ |text.sh  text.sh.x  text.sh.x.c
& v) O# m" }& Z" S: Q
' g# v# M, m- [+ a, s. k解释:. f# Z5 k6 U& S" I& _
-e:指定过期时间为2018年2月28日
1 T6 r3 k8 s. c2 o' j-m:过期后打印出的信息;
; u$ b' m4 R9 N* N6 @6 c" V-v: verbose# {) z/ A. u7 l$ g2 j8 X$ Y; s4 ~2 F
-r: 可在相同操作系统的不同主机上执行$ T2 D4 O4 O; V7 V: t/ ?+ ~% c
-f: 指定源shell
3 T5 a2 ]) |6 x/ }+ H$ y; Y9 j# K * N( S$ g% l' p  [: o) }+ V+ _
如果在过期后执行,则会有如下提示:8 L! N- O- o8 n; h7 e% v/ a; k/ X
[root@ipsan-node03 ~]# ./text.sh.x
) U. d4 K* H7 R! v6 _( f. [: p./text.sh.x: this script file is about to expire$ \, ?0 S. m# s* @
使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题!!' `: n4 ~3 X* h, p

2 {8 _9 M8 F& msch的帮助命令:3 Z1 ?2 h; `8 T( Y6 W
[root@ipsan-node03 ~]# shc -help
' X& V0 z3 t6 J6 W& v4 J8 Pshc Version 3.8.9, Generic Script Compiler
9 B5 V5 i6 c# L, r$ w* Z' bshc Copyright (c) 1994-2012 Francisco Rosales <frosal@fi.upm.es>
4 \: |# R% \' @+ Mshc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script3 f- l) H6 N# w1 v6 B; v' a# f

7 {! x9 n" {1 a5 O: l( _( W% O1 _8 [+ ~    -e %s  Expiration date in dd/mm/yyyy format [none]   (指定过期日期)) k* t. L- s1 R% Q
    -m %s  Message to display upon expiration ["Please contact your provider"]  (指定过期提示的信息)
+ p/ K/ n) |4 U' J    -f %s  File name of the script to compile   (指定要编译的shell的路径及文件名)7 Z, S; Y+ Z& L3 [8 `: G
    -i %s  Inline option for the shell interpreter i.e: -e
7 I% L6 o8 R3 F! z. t    -x %s  eXec command, as a printf format i.e: exec('%s',@ARGV);/ H8 p: ]+ ?4 h) w( D3 J' b
    -l %s  Last shell option i.e: --1 r5 F+ @; j% T9 `! c* D
    -r     Relax security. Make a redistributable binary   (可以相同操作系统的不同系统中执行)
9 ?6 c8 @1 {# d    -v     Verbose compilation    (编译的详细情况)
2 Y5 i1 b' P: v, O9 n# L    -D     Switch ON debug exec calls [OFF]  d. _: m+ u; r$ s+ Y. k
    -T     Allow binary to be traceable [no]
; w+ C3 P+ w5 }* A; d( m* }    -C     Display license and exit
! N+ V* T) b+ i0 K4 l    -A     Display abstract and exit9 H2 [) Y/ s) R) l& X/ J* A- v' J
    -h     Display help and exit" Y# f! L7 G  ^

5 x( }9 k- q) A1 x" M    Environment variables used:5 O- O; P7 Z+ r3 I  |  @7 I
    Name    Default  Usage( m5 x4 Y3 U* K- Q7 j
    CC      cc       C compiler command& t# a+ Y$ |. U  A& Y
    CFLAGS  <none>   C compiler flags- m7 a% f0 G$ H9 \

/ i: y: ^8 A  {; x2 a1 @    Please consult the shc(1) man page.7 `7 D- ?; k! I* s: J

7 W  U. P$ \' b% x8 e) W. j说明:
( c9 \1 z, l. x. w# D; i; i& t经测试,相同在操作系统,shc后的可执行二进制文件直接可以移植运行,但不同操作系统可能会出现问题,
8 n6 d- \1 |6 V' q比如将上面的test.sh.x的二进制文件在CentOS6.9上加密后移到redhat as5u4上不能运行,出现"Floating point exception"错误提示,
8 L. O% ]$ r9 x. m但移到另一台CentOS6.9上直接运行没问题。: {6 i+ Q+ a7 X' g: C, h9 q
方法五: ZIP加密
; O  f) J# Y. d1 K1)文件加密
8 m( _( c% Q" K* H使用命令"zip -e filename.zip filename" 即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的8 m3 }, Y3 A5 E
下面开始为test.txt文件进行加密9 v3 B/ R. \. i- t5 L% w* T) ~% @
[root@centos6-vm02 ~]# cat test.txt * w6 W; T8 F% T* r- b# Z
this is a test!!!
; A8 ~2 p  _6 A  f7 _: h+ x2 P[root@centos6-vm02 ~]# zip -e test.txt.zip test.txt         //如下进行加密操作时,需要输入两次密码6 t0 ?- B7 [0 y% q+ O1 i3 G- f2 |, W
Enter password:                           ! P+ f$ P+ z! j
Verify password: $ ^7 P. t6 Q! n0 h" W
  adding: test.txt (stored 0%)  ?: w8 o. ?6 j  a% f2 n- u
[root@centos6-vm02 ~]# ls
5 a! Y$ Q+ I' v; K2 B; q* ttest.txt  test.txt.zip. i$ ^) x- w  S( g
进行解压的时候,需要输入密码& F) ?( j, A% |2 ?1 R
[root@centos6-vm02 ~]# rm -f test.txt% d7 {( V% Z% Z9 T+ M' n
[root@centos6-vm02 ~]# unzip test.txt.zip
' P! p. t8 a' T' ?: a3 {$ oArchive:  test.txt.zip
- k2 i% g7 g- }' d9 A[test.txt.zip] test.txt password: * D2 I: C0 H5 V9 G
extracting: test.txt                2 r2 H0 {- Z' M! j7 `+ f! i/ o$ Z
[root@centos6-vm02 ~]# cat test.txt
; F1 A4 S: b6 c4 P/ Vthis is a test!!!' o  L  Q. y+ L
2)文件夹加密
& w, _$ @5 ^; D1 z使用命令"zip -re dirname.zip dirname"即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的。0 a" B: L6 g  G) P$ _# V" f4 n( y# O/ F, U
下面开始对目录进行加密0 }- Y; H! y8 ]  U+ }9 w
[root@centos6-vm02 ~]# mkdir dirtest
9 }% k3 O: G  U[root@centos6-vm02 ~]# cat dirtest/haha.txt " G; p8 p; r0 L+ v1 T( o
this is test of dir!!!
/ }% Q1 d2 \0 y- z0 n( b% g6 C[root@centos6-vm02 ~]# zip -re dirtest.zip dirtest9 s4 e9 b/ d! V& n; L
Enter password:   @+ s- k8 k- Q2 P
Verify password: ) W' _3 j+ |+ a4 `
  adding: dirtest/ (stored 0%)3 l9 k/ T0 `0 M0 u7 A. L& y
  adding: dirtest/haha.txt (stored 0%)
6 T5 q+ i* o8 B4 I2 w8 k解压目录时需要输入密码8 {: e5 {" L  F- _/ P6 E! c7 Z6 ^5 A
[root@centos6-vm02 ~]# rm -rf dirtest
/ x7 A, c" ?) l! j; L- v& x[root@centos6-vm02 ~]# unzip dirtest.zip # E- f: ?% E0 @& g" v" w1 @
Archive:  dirtest.zip
! N# X& ]( h( G/ y   creating: dirtest/) I) Q# ?+ h8 H% I5 ?1 m2 B
[dirtest.zip] dirtest/haha.txt password: ) |6 R% M7 Y* ?9 M9 s7 R2 J
extracting: dirtest/haha.txt        
5 W- q0 X2 x* i7 s! x8 s8 i[root@centos6-vm02 ~]# ls dirtest
# t5 H9 n0 A  u: P. S" X( w. hhaha.txt
  P5 J9 J$ g) s  J' Q4 E* ]6 n[root@centos6-vm02 ~]# cat dirtest/haha.txt
% o  X3 l# [& y$ q6 lthis is test of dir!!!
3 J0 K- I2 I+ r; d5 a5 w方法六:GnuPG加密
7 H$ V( d! Y( ]6 G" I+ F6 u- QGnuPG的全称是GNU隐私保护(GNU Privacy Guard),常常被称为GPG,它结合了一组加密软件。它是由GNU项目用C编程语言编写的。最新的稳定版本是2.0.27。在如今的大多数Linux发行版中,gnupg程序包都是默认随带的,所以万一它没有安装,你可以使用apt或yum从软件库来安装它(yum install gnupg)。注意:gpg只能对文件进行加密,对目录则无法完成加密!8 u; i6 O' X" N- Q" q
下面开始使用GnuPG方式对test.txt文件进行加密! a: A( ~& \/ {0 c# i/ ~& X* i$ I
[root@centos6-vm02 ~]# cat test.txt 0 q; ]! |6 j4 `# o" K  L2 K
this is a test!!!
0 B. g/ i4 t1 }$ V, ^- m4 [, {[root@centos6-vm02 ~]# gpg -c test.txt   
  [; A7 K0 m1 t) ^. x* Ican't connect to `/root/.gnupg/S.gpg-agent': No such file or directory         //这个信息可以忽略
0 v' N4 m: |( s1 ^5 {注意:如上加密的时候,会弹出来一个对话框,要求Paraphrase输入两次密码,对这个特定的文件进行加密。
% @' D/ r! E8 d0 q5 Q3 Z一旦运行带-c选项(完全使用对称密码算法加密)的gpc命令,它会生成一个文件.gpg文件。
) S1 r- }% Z# P/ |[root@centos6-vm02 ~]# ll test.txt*
4 y6 z3 B1 X8 v8 x* q% n! X% l-rw-r--r--. 1 root root 18 Jan  4 10:08 test.txt: M5 i3 }, g( C( R* {- {
-rw-r--r--. 1 root root 61 Jan  4 10:04 test.txt.gpg1 z  z) h3 r# J9 _7 j" A& ^6 i
对文件进行加密后,最好将源文件删除!不要再保留源文件了!
7 B. h: x' o% R, U' |& ~( t" P4 E[root@centos6-vm02 ~]# rm -f test.txt  Y8 A$ Y4 ~4 s  {: a' P8 W
文件解密操作。
  Q+ l$ G' f8 B7 D0 C- X注意出现Paraphrase提示时,需要提供加密时输入的同一个密码才能解密
/ q/ k* c  K) u8 g9 d! `4 H[root@centos6-vm02 ~]# gpg test.txt.gpg   . j+ q4 C* R  c1 p! N9 S
gpg: 3DES encrypted data
% `# k: m0 x! ^can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory! g! x. K: v* O& ?  }8 v! ?3 B
gpg: encrypted with 1 passphrase
, E  D- V& Y7 ~9 N+ t/ A1 pgpg: WARNING: message was not integrity protected' L. A4 }/ N" Z( f2 ~7 ]
[root@centos6-vm02 ~]# ll test.txt*$ b) @0 L" T/ N& B9 v
-rw-r--r--. 1 root root 18 Jan  4 10:08 test.txt+ `4 i  v% l/ N1 k5 p6 d
-rw-r--r--. 1 root root 61 Jan  4 10:04 test.txt.gpg7 v6 ?1 t- V$ g; T  k
[root@centos6-vm02 ~]# cat test.txt2 U+ O, p  a" b0 K/ Y( @! ]# {
this is a test!!!' _/ i- w9 w- Z9 C( m; @
二、对字符串进行加密/解密方法 6 j* u$ i7 x. J7 O2 X% n
Linux系统下自带的工具base64可以对字符串进行加密和解决,一般是从标准输入读取文件内容,base64编码并打印到标准输出!) R1 U4 L& b1 l
使用"base64"或"base64 -i"命令进行字符串加密操作! b$ v. n* r& f
使用"base64 -d"命令进行字符串加密后的解密操作
7 _3 ^. I3 g, Q) l如下对字符串"wang@123"进行加密操作:
# g2 R; Y+ H+ G! t; Z4 E/ H[root@ss-server ~]# echo "wang@123"|base64
0 a1 o) C5 N- [9 W. pd2FuZ0AxMjMK  n7 E4 S2 ~$ @1 S$ o: E
[root@ss-server ~]# echo "wang@123"|base64 -i
9 ?- H+ [( O( c0 b, R% W6 Md2FuZ0AxMjMK) M$ f4 T/ M: C. h  q- x) k
对上面加密后的字符串进行解密操作1 E" P% O5 ~) E. r
[root@ss-server ~]# echo "d2FuZ0AxMjMK"|base64 -d
( ]8 D( e. T  e5 c- Jwang@123& @7 `. G: q4 p( a/ ?
[root@ss-server ~]# echo "wang@123"|base64 -i|base64 -d
* }( r2 i" ]7 `wang@123
- C! E, N& D+ S; |+ ~9 J比如,有时为了安全考虑,需要隐藏tomcat版本,这时可以选择将tomcat版本进行加密
0 c  L2 A0 x: m0 M) q首先查看tomcat版本(在RELEASE-NOTES文件中)7 B' l) u* f# }& j) x: A: X- m
[root@ss-server ~]# vim /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES
) H! r/ E) {3 R( O' R+ r" Q: P: G........  S5 w. M2 M$ M& _8 ~' O0 n
........
$ Q, Z2 i2 {/ s                     Apache Tomcat Version 8.5.43
" g" }: J- D8 @' A/ G  V                            Release Notes
( C1 \4 ]  s- [4 Q# b# p' k; X获取tomcat版本号
; E1 ?( K& L! F1 Z$ J[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'4 `( M) }' v* m, I5 s! H& r6 V
8.5.43; O* F2 ^. o; q2 A
将tomcat版本号加密
  n1 G7 X; y6 t: S; Z5 |( n. E1 o[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i. X+ `) y& W: J0 f, l
OC41LjQzCg==* X1 X8 u% X4 f
替换tomcat版本号为加密字符串* a2 O( L- r4 U, w% N" W/ Y! l6 l" y
[root@ss-server ~]# TOMCAT_VERSION_OLD=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}')4 n2 H1 d" B1 M: T' @) t
[root@ss-server ~]# TOMCAT_VERSION_NEW=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i)0 W$ A: K, F* u- r
[root@ss-server ~]# sed -i 's/${TOMCAT_VERSION_OLD}/${TOMCAT_VERSION_NEW}/g' /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES/ m" K3 L% p2 f2 e4 G! u' u, b  t1 {  A
查看替换后的tomcat版本号  c9 a. Q- _' _4 }  B; _9 u
[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'
. f) |; f# i8 ~% }$ S5 YOC41LjQzCg==
) P! N! C$ }) [===================================================================================- i5 G3 q7 N5 u' j, Z
需要注意:$ m! }7 v1 {, D5 o. R; T
linux系统自带的base64工具有BUG,base64解码有时会莫名出现报错:base64: invalid input。: d) W  h" w* F# O- u* o# Q9 [  ?3 n
所以最好还是使用源码包编译安装base64:
) n& a$ M; [% l- @8 x8 J[root@ss-server ~]# wget http://www.fourmilab.ch/webtools/base64/base64-1.5.tar.gz4 ?, \) P9 A* p7 i" Z0 _* R. s/ M
[root@ss-server ~]# tar zxf base64-1.5.tar.gz* t* M  s% }+ N! |: K1 t5 s" g
[root@ss-server ~]# cd base64-1.5
& k3 S, y$ {3 _; @" o3 o[root@ss-server base64-1.5]# ./configure
. ?) Y6 C% {* ^9 j6 e" o: K5 d[root@ss-server base64-1.5]# make && make -n install* e8 ]! J/ ?- k
[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i
( Y6 @9 `) a& `# vd2FuZ0AxMjMK
# B, [! m% y0 d4 a( e* s) |: q, v[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i| ./base64 -d, Q& s3 @2 {6 H" z. e! k
wang@123
1 g0 G% A9 V; I" {( W+ O9 J5 T; L; Z7 f" t" ~, l: W' b
 楼主| 发表于 2021-7-9 10:18:52 | 显示全部楼层
一、对文件进行加密/解密方法, Y' }% U) G" \! u: a
6 q+ m: q9 e& E
方法一:gzexe加密
) x: H; j- }& L& u: Z/ }& o% Q% D这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。示例如下:
& }; [4 s  V% {6 }1 F: k, f
" b* V! j. u( `$ Z! f  S9 j[root@ipsan-node03 ~]# echo "hahahaha" > a.txt3 N% ~6 q$ a9 ?$ B
[root@ipsan-node03 ~]# cat a.txt
% c2 ~7 o' a! S% [% P( u) Yhahahaha
2 n/ _$ p& Y) J8 K( Q2 n[root@ipsan-node03 ~]# ls a.txt + H1 X/ C. i' z
a.txt
" t9 I( Z/ x" V[root@ipsan-node03 ~]# gzexe a.txt
9 b9 p+ X" _: S8 r; R# [1 S. ya.txt:    22.2%- P& F# u# N# I- ~9 y% G' F# p
[root@ipsan-node03 ~]# ls
8 ^+ O, T$ i+ a% ~2 X2 J3 \a.txt  a.txt~  
* D* R/ E+ A0 ?6 ?6 C# K- F9 Z
2 t+ L# s. g% L& F8 xgzexe方法会把原来没有加密的文件a.txt备份为a.txt~ ,同时a.txt文件变成了加密文件(即变成了密文)0 }8 T- M& E- K. l
[root@ipsan-node03 ~]# cat a.txt                                                                                           & r7 x: o" b; X, \- F7 Y3 }$ F
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 00:00 , Processed in 0.057615 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表