`
willzh
  • 浏览: 296332 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux系统环境下,对文件进行加密

阅读更多
引用自:http://blog.chinaunix.net/u/19895/showart_232861.html

Linux关于文件加密的两种方法和详解:
一、用GnuPG加密文件。
GnuPG软件包(Gnu Privacy Guard,Gnu隐私保镖),软件包的名称是gpg。
gpg在加密文件时使用的是公共密钥加密方法。
1.第一步是要创建一个将来用来发送加密数据和进行解密数据的密钥。我们执行一下gpg命令,就会在你的主目录下创建一个.gnupg子目录。
(如果它不存在的话,有时已经存在了)。在该子目录里面有一个gpg.conf的配置文件,它里面是gpg工具的各种配置选项及其默认设置值。
接下来,我们来进行第一项,生成密钥:
[root@fxvsystem root]# gpg --gen-key                         >>这个命令生成密钥
gpg (GnuPG) 1.2.4; Copyright (C) 2003 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
Please select what kind of key you want:                    >>选择密钥类型
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.                      >>选择密钥长度
              minimum keysize is  768 bits
              default keysize is 1024 bits
    highest suggested keysize is 2048 bits
What keysize do you want? (1024) 768
Requested keysize is 768 bits      
Please specify how long the key should be valid.            >>选择密钥有效期,0代表没有期限
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct (y/n)? y                                     >>最后确认是否正确                       
You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: test201                                           >>输入基本信息,真实名字
Email address: test201@test201.com                           >>输入邮件地址
Comment: this is 201 key                                     >>其他相关注释信息
You selected this USER-ID:
    "test201 (this is 201 key) <test201@test201.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O                >>确认OK
You need a Passphrase to protect your secret key.  
Enter passphrase:                                            >>输入密钥口令
Repeat passphrase:
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
+++++.+++++++++++++++++++++++++++++++++++++++++++++.+++++..+++++++++++++++++++++++++++++++++++++++++++++.+++++..++++++++++.+++++++++++++++>.++++++++++...........................................................+++++
                                                                         >>生成密钥过程会出现连续的这种符号。
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 215 more bytes)
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.                         >>这段话表明提示我们在系统上创建一些随机的活动,如果没有足够的活动,他会停下来提示我们继续这样做。(比如查看一下cpu,随意敲打一下键盘都可以)
++++++++++.+++++++++++++++.++++++++++++++++++++.++++++++++.+++++++++++++++++++++++++.+++++.+++++.+++++++++++++++.+++++.++++++++++++++++++++....>+++++..+++++^^^^^
gpg: /root/.gnupg/trustdb.gpg: trustdb created
public and secret key created and signed.
key marked as ultimately trusted.
pub  1024D/BA56DDDA 2007-01-16 test201 (this is 201 key) <test201@test201.com>                   这行里面的BA56DDDA是生成的公共密钥的标识,我们在后面还要使用,记住它吧。
     Key fingerprint = 98E8 0A56 9E16 F61B 379D  2F53 D5DF 4117 BA56 DDDA
sub   768g/8F754496 2007-01-16
                                                                         >>成功
[root@fxvsystem root]#
现在我们已经生成了一对密钥。查看.gnupg目录:
[root@fxvsystem root]# cd .gnupg/
[root@fxvsystem .gnupg]# ll
total 24
-rw-------  1 root root 8075 Jan 16 11:10 gpg.conf
-rw-------  1 root root  856 Jan 16 11:30 pubring.gpg                存放别人公共密钥的“钥匙环”文件。
-rw-------  1 root root    0 Jan 16 11:10 pubring.gpg~
-rw-------  1 root root  600 Jan 16 11:30 random_seed
-rw-------  1 root root  991 Jan 16 11:30 secring.gpg
-rw-------  1 root root 1240 Jan 16 11:30 trustdb.gpg
[root@fxvsystem .gnupg]#
又新生成了几个相关的文件。
2.为了把刚才生成的公共密钥发送给对方,我们需要先用命令把它提取出来:
[root@fxvsystem gpg]# gpg --armor --export BA56DDDA > 201.key        把公共密钥提取到文件201.key中。
其中:
--armor是让gpg生成ASCII格式的输出,这样适合电子邮件来发送。如果可以使用ssh等支持二进制文件传输的工具。可以不使用这个选项。
--export  就不用多说了,就是导出的意思。

3.在收到别人传过来的公共密钥后,需要把这个公共密钥放到“钥匙环”文件里:
比如,我们在另一台计算机上收到了刚才201.key这个公共密钥,然后我们执行:
[root@localhost gpg]# gpg --import 201.key
gpg: key BA56DDDA: public key "test201 (this is 201 key) <test201@test201.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
通过这条命令,可以把刚才在201机器上生成的公共密钥导入到161机器的“钥匙环”文件(~/.gnupg/pubring.gpg)中。
可以通过gpg -kv命令查看161机器上当前存放多少个别人的公共密钥:
[root@localhost gpg]# gpg -kv
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/1C05EC6B 2007-01-15
uid                  Paolo (this test destination 213) <wangqi@livedoor.cn>
sub   1024g/A16A8685 2007-01-15
pub   1024D/BC3AA97D 2007-01-15
uid                  Wangqi (test to 161) <wangqi@livedoor.cn>
sub   1024g/33A9764D 2007-01-15
pub   1024D/BA56DDDA 2007-01-16
uid                  test201 (this is 201 key) <test201@test201.com>
sub    768g/8F754496 2007-01-16
[root@localhost gpg]#
4.接下来,我们在161机器上用201的公共密钥加密一个文件
[root@localhost ~]# gpg -ea -r BA56DDDA install.log               >>通过这个命令对install.log文件进行加密。
gpg: 8F754496: There is no assurance this key belongs to the named user
pub   768g/8F754496 2007-01-16 test201 (this is 201 key) <test201@test201.com>
Primary key fingerprint: 98E8 0A56 9E16 F61B 379D  2F53 D5DF 4117 BA56 DDDA
      Subkey fingerprint: DC76 48E6 70C0 CD36 F671  D2D3 AEC5 02A2 8F75 4496
It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N) y
[root@localhost ~]# ls
-e   代表加密
-a   代表ASCII格式,如果不是通过电子邮件传输,可不加此参数
-r   后面是密钥的标识。可以使用多个-r参数,加多个标识,这样就可以把它发给多个需要该文件的人。
这个命令执行之后,在当前目录下查看,生成了一个同名的install.log.asc的文件,这个文件就是加密后的文件。

5.最后我们把install.log.asc文件传回到201机器上,进行解密查看:
[root@fxvsystem gpg]# ls
201.key  install.log.asc
[root@fxvsystem gpg]# gpg -o install.log -d install.log.asc                   >>这个命令进行解密,-o为输出到一个文件中,-d表示解密。
You need a passphrase to unlock the secret key for
user: "test201 (this is 201 key) <test201@test201.com>"
768-bit ELG-E key, ID 8F754496, created 2007-01-16 (main key ID BA56DDDA)
gpg: encrypted with 768-bit ELG-E key, ID 8F754496, created 2007-01-16
      "test201 (this is 201 key) <test201@test201.com>"
[root@fxvsystem gpg]# ls
201.key  install.log  install.log.asc
[root@fxvsystem gpg]#
我们可以看到在当前目录下生成了一个install.log文件,这个文件就是解密后的文件,可以直接查看。


二、用openssl加密文件
openssl也可以进行文件的加密。方法比上面的gpg简单很多,没有创建密钥的过程,也没有相关的配置文件,只要执行一条命令就可以对文件进行加密。
把加密的文件传给需要的人后,只要他知道加密方式和加密口令,就可以解密查看文件。
openssl支持的加密算法很多,包括:bf,cast,des,des3,idea,rc2,rc5等及以上各种的变体,具体可参阅相关文档。
具体的方法如下:
1.加密一个文件:
[root@fxvsystem root]# openssl enc -des -e -a -in install.log -out install.log.des
enter des-cbc encryption password:
Verifying - enter des-cbc encryption password:
输入密码之后,就会生成install.log.des文件,这个文件名是自己指定的,可以随意写。
其中:
enc表明你打算使用某个算法
-des是具体使用的某个算法
-e 表明要加密
-a 同样是使用ASCII进行编码
-in  要加密的文件名字
-out 加密后的文件名字

把生成的文件传到另一台机器后,执行如下命令进行解密
[root@fxvsystem gpg]# openssl enc -des -d -a -in install.log.des -out install.log
enter des-cbc decryption password:
输入口令后,就可以得到解密后的文件了。
其中
-d表明要进行解密
分享到:
评论

相关推荐

    《操作系统》课程设计 文件加密存储 linux

    利用文件系统的系统调用编程对文件的内容进行加、解密。 要求程序从环境的命令行携带4个参数。第一个是文件名,第二个是操作方式,第三个是密钥,第四个是加密钥循环使用长度。其中后两个参数是可以忽略,但对忽略的...

    AxCrypt 基于文件系统的文件加密软件

    基于文件系统的文件加密软件,运行稳定,加密的文件不随存储介质而改变。

    Linux高级编程(无加密版)

    第3章 Linux系统的网络功能 第4章 Linux系统管理简介 第二篇 Linux高级语言及管理编程 第5章 外壳编程 第6章 gawk语言编程 第7章 Perl语言编程 第三篇 Linux系统内核分析 第8章 Linux内核简介 第9章 系统进程 第10...

    Java类文件加密专家

    在要分发您的Java应用程序前,使用Java 类文件加密专家对所有的Class文件或Jar文件进行加密,在您的系统运行参数中加入以下内容: 1.WEB应用程序 在您使用的Java Web Server的启动参数中,增加以下内容: -...

    java class加密保护工具

    本工具是对java class文件进行加密保护的工具!本工具全面支持linux/unix/windows操作系统。 众所周知,java编译后的class文件是一种中间字节字文件, 很容易被反编译工具反编译,而传统的java源代码保护方法基本都是...

    Linux下的安全文件传输

    在基于linux(redhat)的开发环境下,使用VIM + gcc 实现多台机子之间的文件传输系统,其中一台做服务器。开发结果分为客户端和服务端,一个服务器连接多个客户端,使用数据线程池实现控制。传输过程基于TCP/IP 传输...

    使用C++语言实现基于JVMTI机制的 JAVA 代码 加密保护工具

    本工具是采用jvmti方式对Class文件进行加密,使用C++生成加密和解密库,先用加密库对Jar包进行加密,将加密后的Jar包及解密库文件发布出去,执行时候需要JVM引入解密库文件,解密后执行。c++的.dll文件和.so文件的...

    java类加密工具v2.1

    本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...

    Java类加密工具v2.2(免注册)

    本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...

    java class加密保护(完全免费) v2.1

    本工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的改进,安全...

    威盾PHP加密专家(PHPCodeLock)

    “威盾PHP加密专家(PHPCodeLock)”是一款优秀的 PHP 脚本加密软件,服务器端无需安装任何第三方组件,加密后的文件可运行于任何普通 PHP 环境下。 本软件为免费软件,无需支付任何额外费用。 主要功能 ======= ...

    Linux-C编写的个人帐号管理软件

    本软件是以学习研究为目的而开发的一款运行在Linux系统环境下的帐号密码管理软件,该软件功能简洁实用、安全小巧。通过该软件用户可将日常的一些网站、交友等不便于管理的帐号密码数据集中管理并加密保存。 2.基本...

    linuxC编程实战.part2.rar(文件已加密)

     1.5 Linux下程序的开发环境和开发过程   1.6 习题   第2章 C编程基础、Vi和Emacs编辑器   2.1 C程序的结构   2.2 C语言的基本数据类型   2.2.1 整型   2.2.2 浮点型   2.2.3 字符型   2.3...

    Linux环境下的文件安全传输(C/C++)

    在Linux系统下的gcc编程,实现登陆 注册 查看在线用户 上传 下载 用户管理 日志管理等功能,用了线程池和openssl加密

    JavaClass二进制文件加密专家

    系统介绍 JavaClass文件加密专家... &lt;br&gt; 应用环境 JavaClass文件加密专家只能用在JDK1.5及更新版本的JDK中,您在Windows平台下加密后的Class文件不必再修改就可以应 用于Linux、Unix等平台中。

    项目简述:在Linux下用node-webkit环境开发linux安全管家软件。.zip

    项目简述:在Linux下用node-webkit环境开发linux安全管家软件,主要用到HTML5、CSS3、JavaScript、Linux shell、c语言等编程语言。 功能描述:包括一键体检、垃圾清理、防火墙、病毒查杀、优化加速、文件备份、数据...

    Linux管理员指南

    文件系统 101 8.1 文件系统的构成 101 8.1.1 i-结点 101 8.1.2 超级块 102 8.2 管理文件系统 102 8.2.1 挂装和卸载本地磁盘 102 8.2.2 使用fsck程序 105 8.3 对硬盘进行分区 107 8.3.1 硬盘...

    如何使用Cython对python代码进行加密

    翻译成C后速度比较快,在windows环境中用cython加密后的文件后缀是pyd文件,在linux环境中加密后的问题后缀是so文件,下面以linux环境作为演示 环境准备 系统环境:centos 7 Python版本:python3.x 需要的第三...

    Linux系统故障诊断与排除--James Kirkland

     本书适用于Linux系统管理员及高级用户,对Linux系统感兴趣的用户也可将此书作为参考书。 第1章 系统引导、启动和关闭问题 1 1.1 引导加载程序 2 1.1.1 GRUB 2 1.1.2 LILO 10 1.1.3 当GRUB或者LILO不工作...

    我心飞扬java类加密工具2.1(亲测可用)

    java编译后的class文件是一种中间字节字文件,很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式,但这样会带来很多麻烦,而且也不能真正保护class文件,本工具是对class文件进行加密,...

Global site tag (gtag.js) - Google Analytics