找回密码
 注册
查看: 2038|回复: 1

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-9 10:16:11 | 显示全部楼层 |阅读模式
一、对文件进行加密/解密方法
# ~  S: T% \7 `% ]. I2 R. |" z方法一:gzexe加密
$ c, {, u0 w. o% J- M这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。示例如下:, t4 I9 d1 |6 l* T( ~, k: J
[root@ipsan-node03 ~]# echo "hahahaha" > a.txt
( E& P+ Z0 e! R! b! Q[root@ipsan-node03 ~]# cat a.txt ( i; i7 [! }0 i& r% N( K4 m; K: I1 W# v
hahahaha
9 z8 f+ Y4 ?7 g) ]2 V8 C[root@ipsan-node03 ~]# ls a.txt
# w& s8 L. o1 q6 L2 C& v$ @a.txt2 {' [- M) `1 S& J* x
[root@ipsan-node03 ~]# gzexe a.txt# C3 `6 D6 x2 }1 B- C  B1 `
a.txt:    22.2%
* ]! C5 i% |0 D8 F+ y# t# g* `# S[root@ipsan-node03 ~]# ls
7 _( t. v& x; K4 }( d5 o. Fa.txt  a.txt~  " e( N8 h+ q. \
gzexe方法会把原来没有加密的文件a.txt备份为a.txt~ ,同时a.txt文件变成了加密文件(即变成了密文)
' ?- t' I5 G  n( V% t3 B[root@ipsan-node03 ~]# cat a.txt                                                                                          
' v# L6 M7 `6 i9 g. @% k; j- V% ^* B, g' ]; ^

0 d; ^3 J- l! g2 l6 i[root@ipsan-node03 ~]# cat a.txt~
- L2 A' y' p& R$ v5 ~/ chahahaha) v4 Q: {" r/ H' R9 Z
通常使用gzexe加密后,会将备份文件(这里指a.txt~)删除7 S; c; u. _! U+ r. o/ V1 t+ Q5 R
[root@ipsan-node03 ~]# ls
3 }4 q) V- Y. k5 U0 va.txt  a.txt~  $ j1 M/ D( }/ w; F
[root@ipsan-node03 ~]# rm -f a.txt~7 j* r& [" x* W# @& B' w
[root@ipsan-node03 ~]# ls5 E, e7 _$ T  U( d2 j7 O
a.txt4 @8 l+ \( F. i/ L
使用-d参数进行解压操作$ p* o: W$ D4 g
[root@ipsan-node03 ~]# gzexe --help  L  I$ x& {: _; S( L) |" A) x8 c1 ^
Usage: /usr/bin/gzexe [OPTION] FILE...
0 K3 m& k4 Y% E1 ?" RRename each FILE with a compressed version of itself, renaming FILE to FILE~.
( o4 w4 `% t' l8 i. c; H  -d             Decompress each FILE instead of compressing it.: V/ i# X+ Y4 X$ H0 }
      --help     display this help and exit
7 L5 v4 a$ s3 J% a6 l      --version  output version information and exit! }2 Q. w2 a5 d; [
Report bugs to <bug-gzip@gnu.org>.
; Q5 f1 c/ P) Q! a- o解压之后的文件a.txt内容就会还原回来,同时也会将之前的加密文件变成a.txt~,同样,通常也会删除这个a.txt~的备份文件! c# j; I0 \: j0 l8 U" p
[root@ipsan-node03 ~]# gzexe -d a.txt
7 }% p. {; O) p2 h[root@ipsan-node03 ~]# ls7 y0 m( b# B/ O+ \
a.txt  a.txt~  9 j' |" A! ~1 v  T1 X; w" e; j3 X) C
[root@ipsan-node03 ~]# cat a.txt
3 E5 ~5 p' }) Xhahahaha
+ N. ]+ M3 S/ q+ t; e0 t  ~2 h% U+ j: c. L  D$ v" z6 F: j
( p* M# T+ O6 J  N' g# D# `  D
[root@ipsan-node03 ~]# rm -f a.txt~
. q4 @2 B; W6 r% D[root@ipsan-node03 ~]# ls7 Q1 J; k! c- r' t2 K- |+ N
a.txt7 V. t8 w/ a- Q! r, B( B4 `' C) J
方法二:用tar命令 对文件加密压缩和解压# Q- d! h: C' i. D
[root@ipsan-node03 ~]# ls# M- v% r0 }) Z" ~+ f& E4 X
test.txt% s( M& B: N" \' p$ n
[root@ipsan-node03 ~]# cat test.txt
" U2 Z/ f4 p. B' H1 J$ M& @  [/ U* xhahahaha
1 d8 c8 p5 p8 `7 fheiheihei
  ^$ z% s% Y6 D* }' }# Z* r7 k  2 T  ^/ v$ W9 L2 p- t8 b8 r& W
如下命令是对filename文件(test.txt)进行加密压缩,生成filename.des3加密压缩文件,123@123为加密的密码+ ?3 p6 f# Y  B
[root@ipsan-node03 ~]# tar -zcf - test.txt |openssl des3 -salt -k 123@123 | dd of=test.txt.des3
( o( k. d" y8 I# Y2 A0+1 records in! z: b' S4 k. Q6 S' q) v
0+1 records out
- ]9 ?. K- ?$ l5 W3 N5 P152 bytes (152 B) copied, 0.00333366 s, 45.6 kB/s
2 L  H& q/ m% ]. b---------------------------------------------------------------------------------------------------------
4 h1 O, j* p3 O/ `: Z. l也可以将/mnt目录下的所有文件全部加密压缩
; p0 _7 \( o# X) w  E8 B1 L[root@ipsan-node03 ~]# tar -zcf - /mnt/* |openssl des3 -salt -k 123@123 | dd of=test.des3
; o9 K7 D  p4 O3 r; t6 [7 \& H或者根据匹配规则进行加密压缩. n; w" C& j% k3 t
[root@ipsan-node03 ~]# tar -zcf - /mnt/pass_* |openssl des3 -salt -k 123@123 | dd of=test.des3
8 B2 \9 p$ g) j* @---------------------------------------------------------------------------------------------------------. S  r7 ?6 w. y) {# r
  1 q/ ?$ q7 G8 w3 x' H" m5 |4 @( k) s
通常加密后,会将源文件删除% R) d9 O$ K; q
[root@ipsan-node03 ~]# ls
4 r8 G: E4 S/ A5 U) N7 d/ Ntest.txt  test.txt.des3$ ^- T  J6 w8 A
[root@ipsan-node03 ~]# rm -f test.txt3 J7 u, S/ ~' v" ]( Z
[root@ipsan-node03 ~]# cat test.txt.des3
0 Y7 ~" ^/ c0 ~6 l4 M" ?8 u
. T6 u  T9 A8 W# ]. |0 I- m/ C解压操作:
4 w( q' R$ k) l: [8 v5 N[root@ipsan-node03 ~]# dd if=test.txt.des3 |openssl des3 -d -k 123@123 | tar zxf -
6 u% F  c8 u* |1 a' e& W+ @4 n0 t0+1 records in
  `- N1 X+ f& k: p' N0+1 records out
0 x* q7 y3 K5 H' z0 @  E; z152 bytes (152 B) copied, 4.5873e-05 s, 3.3 MB/s
4 l) l+ @$ t/ C6 @1 ?  8 ^  A: q0 N0 ~; j0 l
[root@ipsan-node03 ~]# ls
% x% ^6 ~0 i5 c- o. Z2 ?+ Stest.txt  test.txt.des3# A4 S7 `" F5 N3 i8 h
[root@ipsan-node03 ~]# cat test.txt/ e- F9 g. w% a* Y! M3 Y( @8 U
hahahaha
0 A3 ]0 N, i5 ~: ^' @heiheihei
! v1 H; s  v  @# Z  0 o( r+ f: @4 [  W, ]  S$ u1 B: W
注意命令最后面的"-",它将释放所有文件,
% n5 P3 a; u& ~$ H. n9 g. d-k 123@123可以没有,没有时在解压时会提示输入密码7 b1 r7 S- }# y, S, q6 y
方法三:结合Tar和OpenSSL给文件和目录加密及解密% _2 z4 @! z- z" r+ T) Y
当有重要的敏感数据的时候,给文件和目录额外加一层保护是至关重要的,特别是当需要通过网络与他人传输数据的时候。基于这个原因,# s0 j0 J. m. {
可以用到tar(Linux 的一个压缩打包工具)和OpenSSL来解决的方案。借助这两个工具,你真的可以毫不费力地创建和加密 tar 归档文件。$ [5 R& \7 K, s+ n- Z  P& U
下面介绍使用 OpenSSL创建和加密 tar 或 gz(gzip,另一种压缩文件)归档文件:
  |' m7 N  t1 Z$ ~- M牢记使用 OpenSSL 的常规方式是:* D5 e5 T2 a( N/ v
# openssl command command-options arguments
& Z  C' W8 Y, T$ h. d示例如下:
$ x) ~0 n3 K9 Q) K; S3 X[root@ipsan-node03 ~]# cd /mnt/. n, K0 |/ `4 T" p
[root@ipsan-node03 mnt]# ls
* f- o: `' E9 L[root@ipsan-node03 mnt]# echo "123" > a.txt
) N' v/ q% i. {6 f7 G+ {% g9 M[root@ipsan-node03 mnt]# echo "456" > b.txt2 q8 g3 L* [+ y6 w
[root@ipsan-node03 mnt]# echo "789" > c.txt
+ r0 c. M4 G' z, }; P0 S; V[root@ipsan-node03 mnt]# ls( Z; ]! U5 G' J4 k, ]( H( e
a.txt  b.txt  c.txt; K5 F5 g  d0 ]' ?; M* Y1 m
现在要加密当前工作目录的内容(根据文件的大小,这可能需要一点时间)
: Q8 f7 p0 W4 K  J+ X* H7 ][root@ipsan-node03 mnt]# tar -czf - * | openssl enc -e -aes256 -out test.tar.gz3 U! \+ R' R9 D6 Q7 v
enter aes-256-cbc encryption password:                          //假设这里设置的密码为123456
9 T9 k0 }+ W, A4 O4 |' VVerifying - enter aes-256-cbc encryption password:
) m. c1 _6 E6 b8 A2 x# M: Y上述命令的解释:
$ f9 E% D! `% Y: J3 Senc 使用加密进行编码
  _0 }) u- c4 y( C( K8 C  Z-e  用来加密输入文件的 enc 命令选项,这里是指前一个 tar 命令的输出
7 a9 L( n$ |" ~# [- d-aes256 加密用的算法" W& P% v/ b# i. Y; x4 M5 V* a) g6 N
-out 用于指定输出文件名的 enc 命令选项,这里文件名是test.tar.gz
" j5 g3 t/ T8 s! A8 h& D[root@ipsan-node03 mnt]# ls# O* F, A, t7 Z) N# `+ F" k# K
a.txt  b.txt  c.txt  test.tar.gz
/ W+ r( s' @3 w" D" r" \[root@ipsan-node03 mnt]# rm -rf a.txt
0 G& _$ q) H7 `' u' n8 A[root@ipsan-node03 mnt]# rm -rf b.txt
! Y: ?4 h8 Q; q/ X9 F[root@ipsan-node03 mnt]# rm -rf c.txt
  K0 O/ m7 f# T[root@ipsan-node03 mnt]# ls
7 D* M4 K3 G5 L+ }0 m7 _test.tar.gz/ C" N+ L6 ?7 Z( u: k8 A
对于上面加密后的tar包直接解压肯定是不行的!
/ O9 c3 w) c7 v0 ]7 E[root@ipsan-node03 mnt]# tar -zvxf test.tar.gz
, I& X  U. t% _, Ogzip: stdin: not in gzip format9 I4 }4 [3 ~/ e5 J+ q$ I
tar: Child returned status 17 I$ s& Q( T2 @) o
tar: Error is not recoverable: exiting now* e; d3 P0 p9 M3 ?/ N5 `% D
要解密上述tar归档内容,需要使用以下命令。% q8 ^4 q/ t* e7 h
[root@ipsan-node03 mnt]# openssl enc -d -aes256 -in test.tar.gz | tar xz -C /mnt/: {' P& X/ x; @3 _# n* G$ D9 J% m$ v
enter aes-256-cbc decryption password:+ \/ ]6 V0 B% ]. ^$ s- n) ?
[root@ipsan-node03 mnt]# ls
0 Y0 c; G8 n( D  a. ?/ s4 La.txt  b.txt  c.txt  test.tar.gz: x& h5 c7 F. \
上述命令的解释:
" S+ Q" A4 J* m: k-d  用于解密文件3 U+ r5 ]0 W  z, `- D  R
-C  将加压后的文件提取到目标目录下
) x/ U0 u; m& ~) g; Y* z! {当你在本地网络或因特网工作的时候,你可以随时通过加密来保护你和他人共享的重要文本或文件,这有助于降低将其暴露给恶意攻击者的风险。! c/ p% P2 D, S- V( l+ D7 n" [; Y
方法四:shc加密(仅仅对shell脚本加密)& \% J+ N, E2 t; F: A$ f- o
shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、  }5 H( l. k% R8 b& @
密码等不希望公开的问题。
' r* W( @' D$ M" T6 s. J# b; v % q0 b1 E! I8 o& t. X
如果你的shell脚本包含了敏感的口令或者其它重要信息, 而且你不希望用户通过ps -ef(查看系统每个进程的状态)捕获敏感信息. 你可以( u7 q0 K$ G3 D4 t
使用shc工具来给shell脚本增加一层额外的安全保护. shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执; I( K  d  z& E4 D' ]) }
行文件(支持静态链接和动态链接). 该工具能够很好的支持: 需要加密, 解密, 或者通过命令参数传递口令的环境.) B9 ]3 _) z5 r" r4 l4 p

% B6 o  u& G4 A: r3 D- y/ v" Eshc的官网下载地址:  
' _8 B/ t4 }  G3 n" vhttp://www.datsi.fi.upm.es/~frosal/sources/  H) x/ ^+ i; I2 r3 p' S# k

9 P* n- ~7 Q, r. n' k5 @安装方法:
3 k* B/ @7 `1 d7 N+ J& f[root@ipsan-node03 ~]# cd /usr/local/src/  K9 @  m  p* s4 J, I$ A" T% L, R
[root@ipsan-node03 src]# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
* S9 o; z. B9 K( R, G& ^[root@ipsan-node03 src]# tar -zvxf shc-3.8.9.tgz
. I, L' _, Y4 H, N% s4 p" M0 k[root@ipsan-node03 src]# cd shc-3.8.9
* ]- T. h- o( y' R/ ^. E) E[root@ipsan-node03 shc-3.8.9]# mkdir -p /usr/local/man/man1. K7 L$ f' k. x
这步是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;
% A* U# y7 T& H+ T4 o将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装
+ ~9 v. X- R9 T4 C* M: U
6 O- r5 Q6 E# K7 v2 i7 C3 C[root@ipsan-node03 shc-3.8.9]# make install$ v8 z5 C3 l: Q  u% Q: _2 m3 `. X' \
这是要回答yes或者y,不能直接回车,否则会报错
3 n2 e  W$ d& k2 Z8 R; z$ ~4 U
! I5 I+ z: F) C' l2 K. v需要注意的是,sch只能能shell脚本文件进行加密,其他文件都不可以!
- d: I+ [- v1 {5 V' D # |- k2 O/ c& i2 u! B
sch加密使用方法:2 ]- v* T0 v( n' D  a
"-f"选项指定需要加密的程序2 l1 D2 G. T3 G- t9 G
[root@ipsan-node03 ~]# ls2 {3 r" i4 T2 N' g; w8 Q
text.sh& g1 f8 s' M# e/ {
[root@ipsan-node03 ~]# cat text.sh
7 z# T$ R4 P7 K) c+ `% {" ]/ }) b#!/bin/bash
, m7 q- N5 J& [$ |echo "hahaha"
6 ?3 y: N1 }# _5 J[root@ipsan-node03 ~]# shc -r -f text.sh0 I8 n7 N; d5 l( I9 f% m+ G
[root@ipsan-node03 ~]# ls
7 A3 a' F5 i- ^, j0 a7 s# ~text.sh  text.sh.x  text.sh.x.c
  V3 O- b  A/ k9 R3 f" @1 m7 ~! u9 r " u( l% @( b. V6 N2 q. U
注意:要有-r选项, -f 后跟要加密的脚本名。
& ^9 d7 |9 r- `* U1 a& z运行后会生成两个文件,script-name.x 和 script-name.x.c
+ Y  ]+ n: y' @$ a/ C+ Q& dscript-name.x是加密后的可执行的二进制文件.
. M! N  U" d0 ~2 w7 g  Y! _./script-name.x 即可运行.
% ]8 q, n- a# D; A5 D# Jscript-name.x.c是生成script-name.x的原文件(c语言)0 N* w/ N& `0 |1 r$ f1 ^5 u
[root@ipsan-node03 ~]# ./text.sh
; E! @! w# s% k$ g* ?0 p9 @hahaha9 e8 p! X" l9 q1 S/ x
[root@ipsan-node03 ~]# ./text.sh.x
1 z- X  a' T, q9 n) Nhahaha
/ H3 E- P$ p) i, W' M$ r
" [6 n# j2 r2 G5 y5 k通常从安全角度考虑:; v$ V/ v: K9 j: u; t
使用sch命令对shell脚本文件进行加密后,只需保留.x的二进制文件即可,其他两个文件均可以删除!5 \4 M- ]+ p) E: Z0 {6 M
[root@ipsan-node03 ~]# ls
* a3 o2 r8 e) Xtext.sh  text.sh.x  text.sh.x.c
2 s) ^( P1 O+ d6 B6 D! V* q[root@ipsan-node03 ~]# rm -rf text.sh7 T  G# E4 H0 Q, ^& l3 C
[root@ipsan-node03 ~]# rm -rf text.sh.x.c
# X& o' E  I# ?[root@ipsan-node03 ~]# ls4 V! `& k/ \/ j6 x6 Z, V
text.sh.x
: F3 O8 `: _( W% G9 k: n[root@ipsan-node03 ~]# ./text.sh.x
" n' g- V9 Z+ b( V  ?& W% e$ [hahaha  u" L6 }" R/ @+ I9 B( f
3 Q8 ?/ R* t) f! X5 f
另外:, I) c4 I7 w; R) c
shc还提供了一种设定有效执行期限的方法,可以首先使用shc将shell程序转化为二进制,并加上过期时间,如:
. Z! }( n3 `" W% i- ]; h# ^6 [4 g[root@ipsan-node03 ~]# shc -e 28/02/2018 -m "this script file is about to expire" -v -r -f text.sh
( j$ r6 Z8 I6 }. g5 p, D  ]( h5 c, N% Tshc shll=bash
8 i2 C0 `, i9 f/ |+ {1 c6 Jshc [-i]=-c9 ~5 @& ], e. w
shc [-x]=exec '%s' "$@", g6 d" j  ^5 @9 Q
shc [-l]=2 g: x2 t' w$ W- M' |& K# P1 Q8 _
shc opts=3 b  M$ u5 Q" }6 |! e
shc: cc  text.sh.x.c -o text.sh.x
; c6 D4 G4 s; G0 ~4 I' P# hshc: strip text.sh.x4 I! ]8 m, t2 d9 W
shc: chmod go-r text.sh.x; ~5 @* ?8 ^+ G0 l
[root@ipsan-node03 ~]# ls- `; O- W2 k2 l- D
text.sh  text.sh.x  text.sh.x.c$ ^- b" i* Q# @+ C, i

, O2 I9 M9 O/ @0 P解释:5 z: I3 a' A7 i  F& {1 U
-e:指定过期时间为2018年2月28日/ }% L8 d3 d1 C+ z" y/ u# M
-m:过期后打印出的信息;: y4 j3 x) C$ d# |
-v: verbose! Y5 ?: m2 n9 h8 z! ?( _
-r: 可在相同操作系统的不同主机上执行6 u1 V" ~6 H$ A4 W4 z) ^' k: j
-f: 指定源shell& t. G3 Y+ i. }& d; b* H

9 \8 L; P1 w6 f) j5 D3 i, n6 s! w如果在过期后执行,则会有如下提示:
) M  D2 r' U$ H[root@ipsan-node03 ~]# ./text.sh.x, y. R( Y7 l! \
./text.sh.x: this script file is about to expire
- o7 h8 f6 M6 @; R使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题!!% P# p. j$ W7 n2 D8 n' s; {

1 ~. G# P3 ^4 O( |/ p0 psch的帮助命令:2 m. ?: E" b% p( ~  Y, |* h+ s
[root@ipsan-node03 ~]# shc -help# u3 a3 y# D( p: t3 e7 V
shc Version 3.8.9, Generic Script Compiler
: y  B( c% [8 Q; jshc Copyright (c) 1994-2012 Francisco Rosales <frosal@fi.upm.es>
/ M9 R# X+ c8 T4 s* _$ Nshc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
! D! |8 \7 W8 t" t 2 c# k) N; \+ a& n9 X
    -e %s  Expiration date in dd/mm/yyyy format [none]   (指定过期日期)
5 J+ _4 g: v8 A    -m %s  Message to display upon expiration ["Please contact your provider"]  (指定过期提示的信息)7 J2 y. j& J& }7 }4 o
    -f %s  File name of the script to compile   (指定要编译的shell的路径及文件名)) s; M, _: K5 ~- A/ q
    -i %s  Inline option for the shell interpreter i.e: -e
6 D; O2 j4 t: F: O2 _5 H1 K; C" @    -x %s  eXec command, as a printf format i.e: exec('%s',@ARGV);) [! H8 x$ f5 c# \! L
    -l %s  Last shell option i.e: --
  p% \3 x( o1 t7 @! |    -r     Relax security. Make a redistributable binary   (可以相同操作系统的不同系统中执行)- V6 o. A% T) X# ]( e. I
    -v     Verbose compilation    (编译的详细情况)
9 }5 M1 `: l2 I" a    -D     Switch ON debug exec calls [OFF]5 ~! i+ N& X: @$ i0 u& r5 d, n
    -T     Allow binary to be traceable [no]
6 o5 [$ m1 i( {; w% u& E6 D+ c3 j* z. y0 e    -C     Display license and exit
+ ~+ a! Y- N8 R1 v, x5 }    -A     Display abstract and exit
. B9 F4 Z  R; |: j% S    -h     Display help and exit
0 W( I. Y9 S9 `# _2 n% `
; t8 D, j" ~5 e, ^8 y, W6 ~: i    Environment variables used:1 B% q1 g) g' I3 z5 V
    Name    Default  Usage5 Y% v; p" D9 o2 `
    CC      cc       C compiler command
& R, M. i- e0 a! ], _4 w    CFLAGS  <none>   C compiler flags2 M6 U9 v* i# S3 y7 a, k
# @" O- n! I9 b8 d* ~" L
    Please consult the shc(1) man page.
! t& B9 C. o; R7 F. J) H! E
1 {' M1 p; y( Z- B7 l$ ]说明:& Y; `5 N- ^4 G' x: l
经测试,相同在操作系统,shc后的可执行二进制文件直接可以移植运行,但不同操作系统可能会出现问题,% G0 {6 R- D  `1 z
比如将上面的test.sh.x的二进制文件在CentOS6.9上加密后移到redhat as5u4上不能运行,出现"Floating point exception"错误提示,
/ W* b+ t3 k: W# c但移到另一台CentOS6.9上直接运行没问题。
# S& [6 L: x1 m1 K4 W方法五: ZIP加密
) y2 V" X' n) [6 D8 ^1)文件加密% V6 |# M, c, R  k3 d0 o2 w$ Q
使用命令"zip -e filename.zip filename" 即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的
9 O5 y- V+ u, y6 p下面开始为test.txt文件进行加密
: R6 g2 U# i* I[root@centos6-vm02 ~]# cat test.txt
' a& R; S* f9 Q2 rthis is a test!!!! k# ^' y4 g$ E. t: P6 c5 p- U' I5 Y
[root@centos6-vm02 ~]# zip -e test.txt.zip test.txt         //如下进行加密操作时,需要输入两次密码8 n9 j8 a, Y  {! S1 W) f* e
Enter password:                           " ~7 F" p9 X3 h% v: r7 P- O, p
Verify password: : p( t( B* D& i# Y/ o# X
  adding: test.txt (stored 0%)( r9 n! q2 _/ d! v0 O
[root@centos6-vm02 ~]# ls
* a  ]2 K& M+ T% Z$ `3 btest.txt  test.txt.zip) \/ n# Y! ]" [  x9 y4 O: t; a& O
进行解压的时候,需要输入密码
3 s7 z' G( f# S( y% }[root@centos6-vm02 ~]# rm -f test.txt( T0 y# ^! X& \
[root@centos6-vm02 ~]# unzip test.txt.zip
  V* ^' W3 f$ ]/ \$ E! ~* SArchive:  test.txt.zip
5 u. l# V, i/ ][test.txt.zip] test.txt password:
) `2 k4 A. Q1 a$ `& w extracting: test.txt                : g/ }. g6 n: E+ M5 p" e
[root@centos6-vm02 ~]# cat test.txt
7 ^0 [$ x- ?& Q, S/ M* k+ z& tthis is a test!!!
8 l& [- K; H- Y% Y( ]1 w2)文件夹加密
" Z" J- v! m4 X. ]使用命令"zip -re dirname.zip dirname"即可出现输入密码的提示,输入2次密码。 此文件即被加密解压时候是需要密码的。/ C2 Y' a$ Q. B7 B2 O
下面开始对目录进行加密! C( M8 C" T9 O1 I( I. M
[root@centos6-vm02 ~]# mkdir dirtest5 @% w/ B7 F  E& n' }2 ]3 D
[root@centos6-vm02 ~]# cat dirtest/haha.txt
; G+ y  G- Q- Y3 V+ w' M0 g# q& U' ]this is test of dir!!!
& h" G! U6 T; S4 A* e% D1 n" ][root@centos6-vm02 ~]# zip -re dirtest.zip dirtest
# g8 ~( |; g0 e9 W8 i  B6 U2 gEnter password:
% v: ~$ y: ~( [# w3 A" I' jVerify password:
3 s: e4 K1 Z. V4 h& e" c: y  adding: dirtest/ (stored 0%)5 z8 V, O2 I5 q. x) C
  adding: dirtest/haha.txt (stored 0%)4 u/ O  |- \4 A5 q6 E
解压目录时需要输入密码
5 ]# E- h. W! E7 _& N0 ^7 e[root@centos6-vm02 ~]# rm -rf dirtest! D# m4 S  k5 L0 F; w
[root@centos6-vm02 ~]# unzip dirtest.zip
, F* e+ F" q; n* sArchive:  dirtest.zip! R# N; V+ ^/ ^: [4 z2 y6 J2 f
   creating: dirtest/, \( {2 }6 P7 q5 @$ v4 \) N( i
[dirtest.zip] dirtest/haha.txt password: * u0 O3 p% i% B& s1 ?
extracting: dirtest/haha.txt        ! ^5 f' a) X# Q. t6 R, c' }+ i9 t
[root@centos6-vm02 ~]# ls dirtest. }* s5 r8 n, }
haha.txt2 k& p$ U* ?$ m' ~5 N; t
[root@centos6-vm02 ~]# cat dirtest/haha.txt 1 m7 Z! m! s9 \4 Q7 D3 P0 P
this is test of dir!!!
5 d  {  D; w  L4 s0 {方法六:GnuPG加密
5 H* P( p& F( E2 t( T+ xGnuPG的全称是GNU隐私保护(GNU Privacy Guard),常常被称为GPG,它结合了一组加密软件。它是由GNU项目用C编程语言编写的。最新的稳定版本是2.0.27。在如今的大多数Linux发行版中,gnupg程序包都是默认随带的,所以万一它没有安装,你可以使用apt或yum从软件库来安装它(yum install gnupg)。注意:gpg只能对文件进行加密,对目录则无法完成加密!% W) k/ i/ C6 S5 y, L% Z  l
下面开始使用GnuPG方式对test.txt文件进行加密# s4 y& J. @4 e6 H$ v# \$ |$ A3 O' H$ C3 W; b
[root@centos6-vm02 ~]# cat test.txt ' r! W2 Y4 `: P2 q0 C) W& V
this is a test!!!2 Z. c1 c- g. |; s4 x
[root@centos6-vm02 ~]# gpg -c test.txt   
- m- i( D( e* J& }/ d5 Wcan't connect to `/root/.gnupg/S.gpg-agent': No such file or directory         //这个信息可以忽略8 H2 k1 [/ p7 M9 `+ H2 Z% C9 z
注意:如上加密的时候,会弹出来一个对话框,要求Paraphrase输入两次密码,对这个特定的文件进行加密。- }( f/ p. ]6 U7 D
一旦运行带-c选项(完全使用对称密码算法加密)的gpc命令,它会生成一个文件.gpg文件。. a1 |! g8 t! e7 |
[root@centos6-vm02 ~]# ll test.txt*
5 y) p4 X" B0 Z( a( b- t-rw-r--r--. 1 root root 18 Jan  4 10:08 test.txt
; H# b9 C! A4 X) V; i: x" e-rw-r--r--. 1 root root 61 Jan  4 10:04 test.txt.gpg
+ ~" p  N6 W) n  I: y对文件进行加密后,最好将源文件删除!不要再保留源文件了!
" _$ x& [8 a5 C; L* S5 X8 k- G[root@centos6-vm02 ~]# rm -f test.txt
) c  G5 a; U3 T8 L! w% u文件解密操作。
/ h/ ]$ o; J) s& c% e7 \5 H% n注意出现Paraphrase提示时,需要提供加密时输入的同一个密码才能解密" E1 z5 v; f% m2 b; h  j
[root@centos6-vm02 ~]# gpg test.txt.gpg   
  r. {4 _9 o" `  B3 @gpg: 3DES encrypted data
2 j6 h% ~; `& Y/ m( m8 H" `; fcan't connect to `/root/.gnupg/S.gpg-agent': No such file or directory% k2 I7 {3 n- M: z: y3 ?3 ~( \
gpg: encrypted with 1 passphrase
& }  a& }' A3 F7 M$ ~7 qgpg: WARNING: message was not integrity protected" b" ]! m9 |. t4 H
[root@centos6-vm02 ~]# ll test.txt*+ d2 ]6 @( Q( Q) R. E, U
-rw-r--r--. 1 root root 18 Jan  4 10:08 test.txt
( \& e  f  Q8 U+ z4 s-rw-r--r--. 1 root root 61 Jan  4 10:04 test.txt.gpg
  t8 F2 q% P& Y. l[root@centos6-vm02 ~]# cat test.txt
; c2 s$ S! n( P, l$ x( G8 Lthis is a test!!!8 G( }; o. n& w- h+ M1 [
二、对字符串进行加密/解密方法 * z2 A+ D6 l5 B4 ?
Linux系统下自带的工具base64可以对字符串进行加密和解决,一般是从标准输入读取文件内容,base64编码并打印到标准输出!. Q1 O9 Q, M& I' R( I
使用"base64"或"base64 -i"命令进行字符串加密操作
+ b" V* g3 A# R3 i- S: @使用"base64 -d"命令进行字符串加密后的解密操作4 X( C% A( c0 Y
如下对字符串"wang@123"进行加密操作:
+ C$ h% u! G. F4 v- x! a[root@ss-server ~]# echo "wang@123"|base64
7 O" [$ w/ S2 r1 \, u5 A3 [d2FuZ0AxMjMK
% K; O* D( w3 R, l2 k[root@ss-server ~]# echo "wang@123"|base64 -i% e- G) i, P3 u0 P# @- d
d2FuZ0AxMjMK) m, ^) g, s' A$ n5 U7 C
对上面加密后的字符串进行解密操作* q( A; P- F5 J9 R  \7 r
[root@ss-server ~]# echo "d2FuZ0AxMjMK"|base64 -d7 |# ^1 n7 q! r* S- @9 d: I8 `" q
wang@123
/ X  p6 F! b- Q: y8 k- G[root@ss-server ~]# echo "wang@123"|base64 -i|base64 -d8 d" u5 d2 R% w2 Z
wang@123
3 G- \# \" ]* T8 w比如,有时为了安全考虑,需要隐藏tomcat版本,这时可以选择将tomcat版本进行加密) @6 s& b( K2 q2 G
首先查看tomcat版本(在RELEASE-NOTES文件中)
7 Z6 E* d$ B  h; M5 K4 B[root@ss-server ~]# vim /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES / H7 R; }7 }6 D  t% H4 o2 F
........
0 v3 `6 V/ K3 z; S3 w# i........
& o( M3 c* Q( v9 w) v1 i                     Apache Tomcat Version 8.5.436 Q: P! e: I. u) f( Y
                            Release Notes. E: |) Q7 \& v
获取tomcat版本号
5 I, @. g! T+ r, X[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'* u- J+ B5 }, ?; K' C% q
8.5.43
+ `: a& p3 e* Z! X& e0 `8 }9 i将tomcat版本号加密4 j9 ~4 b2 h3 \: a$ r) |4 M& f
[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i
5 a( ]' C9 K* kOC41LjQzCg==
  N7 W  ^" \' F+ Z% g( D2 m替换tomcat版本号为加密字符串0 z( y) ^$ l8 S' P' c7 s
[root@ss-server ~]# TOMCAT_VERSION_OLD=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}')
/ Q) B3 F$ |+ @6 L[root@ss-server ~]# TOMCAT_VERSION_NEW=$(cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'|base64 -i)
& o6 k$ `" l/ B7 O[root@ss-server ~]# sed -i 's/${TOMCAT_VERSION_OLD}/${TOMCAT_VERSION_NEW}/g' /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES2 Q8 G8 a+ x2 a! ^6 r9 d2 J7 t- `
查看替换后的tomcat版本号
" l% W. B2 z7 E! H[root@ss-server ~]# cat /opt/daiwy/tomcat_8081_wedai/RELEASE-NOTES|grep -w "Tomcat Version"|awk '{print $4}'
+ B8 D0 w; {6 |$ J: sOC41LjQzCg==/ d. y8 ^3 ^. |$ p
===================================================================================
" l; T4 q: _6 E4 k4 k7 ?2 M需要注意:* C. F' g$ B( W- P6 X
linux系统自带的base64工具有BUG,base64解码有时会莫名出现报错:base64: invalid input。# ^: E. a( d: g3 h3 G  Y
所以最好还是使用源码包编译安装base64:1 N& S9 a$ G! k# d. l
[root@ss-server ~]# wget http://www.fourmilab.ch/webtools/base64/base64-1.5.tar.gz
% R2 N- K' K- f6 R$ b4 ~7 R. I9 f[root@ss-server ~]# tar zxf base64-1.5.tar.gz: l* B6 A7 m) E. m
[root@ss-server ~]# cd base64-1.59 ~0 ]+ `$ F# x4 k: U
[root@ss-server base64-1.5]# ./configure: b1 `) e9 `' e: r0 {, N8 V
[root@ss-server base64-1.5]# make && make -n install* I! S$ L: Z$ ^" J8 k3 I* x; W' K
[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i
& ?" X$ B: ^. u, \0 w* [d2FuZ0AxMjMK
7 M4 L# z+ ]7 y[root@ss-server base64-1.5]# echo "wang@123" | ./base64 -i| ./base64 -d
9 @( b) S' ^1 S2 x3 Hwang@123% D1 D: p$ ]. q6 ~

- d0 X$ N- N. |% Y+ B

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-7-9 10:18:52 | 显示全部楼层
一、对文件进行加密/解密方法5 T- }) b8 }: N1 K7 v9 `, N% \
' c2 s. l9 A8 D; s) L
方法一:gzexe加密$ J  H! ]: L! ]/ X) L$ t0 {
这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。示例如下:$ A' f/ Z: u' G9 }. }. h  h) B
& g+ J: |. a- m+ c% |* E3 ?5 J
[root@ipsan-node03 ~]# echo "hahahaha" > a.txt* B. Z+ k/ i! g+ j5 N4 X
[root@ipsan-node03 ~]# cat a.txt
" |. p  ~, k/ F; U6 M2 k  o! V% J+ C* mhahahaha1 H! T+ p% q) A" y0 i
[root@ipsan-node03 ~]# ls a.txt
0 Y( h1 }9 U7 o0 Z; xa.txt
: w& m+ S! r0 Q. Q" z[root@ipsan-node03 ~]# gzexe a.txt
7 f8 c4 M/ R* Ea.txt:    22.2%8 t  }4 p6 F8 h
[root@ipsan-node03 ~]# ls# P8 w+ G! c" z
a.txt  a.txt~  & x8 k( {; \4 X" X4 [0 x7 G1 A2 w6 X
/ J3 Y5 R' N1 \& s
gzexe方法会把原来没有加密的文件a.txt备份为a.txt~ ,同时a.txt文件变成了加密文件(即变成了密文)
3 e) [) ?- S9 U3 w6 |+ Y9 M[root@ipsan-node03 ~]# cat a.txt                                                                                          
) W4 W$ B9 q6 z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:02 , Processed in 0.018466 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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