`
willzh
  • 浏览: 300205 次
  • 性别: 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下透明加解密

    - 创建加密容器:使用`dd`命令创建一个空的加密容器文件,然后用`cryptsetup luksFormat`对其进行加密初始化。 - 打开加密容器:使用`cryptsetup luksOpen`命令,输入密钥打开加密设备,创建一个映射设备。 - ...

    Ubuntu Linux之加密文件系统篇

    总结来说,Ubuntu Linux中的dm-crypt加密文件系统提供了高效、易用且灵活的加密解决方案,能够适应多种存储环境。通过正确配置内核、安装必要工具并遵循正确的步骤,用户可以轻松地保护自己的数据免受未经授权的访问...

    DES加密解密(适用的Windows和Linux系统),防止Linux的下解密失败工具类

    这个DESEncrypt工具类是针对Windows和Linux系统设计的,确保在不同操作系统下都能进行一致的加密和解密操作,避免因环境差异导致的解密失败问题。主要关注点在于如何在不同系统中生成一致的随机数种子,以确保加密...

    linux透明加密核心资料

    Linux透明加密技术是一种在Linux操作系统下对文件进行加密的机制,它允许用户在不改变原有操作习惯的情况下,对文件和目录进行加密,提高数据的安全性。这种技术的关键在于其“透明性”,即用户在使用加密文件时,...

    des.rar_des文件_linux 文件加密_linux文件加密

    标题中的“des.rar_des文件_linux 文件加密_linux文件加密”表明我们关注的是DES(Data Encryption Standard)加密算法在Linux操作系统中的应用,以及如何对Linux文件进行加密。DES是一种经典的对称加密算法,它在...

    基于Linux的通用加密文件系统Waycryptic的设计与实现.pdf

    总的来说,Waycryptic的出现,不仅填补了Linux系统在通用加密文件系统领域的空白,也为其他操作系统提供了一个可借鉴的设计范例。随着技术的不断进步,我们期待未来能看到更多类似Waycryptic的创新解决方案,以保障...

    一个基于Linux的加密文件系统的设计与实现_邢常亮1

    通过对系统交换分区的加密,即使在内存中,敏感数据也能保持加密状态,提高了系统在多用户环境下的安全性。同时,)*2)对文件名、元数据等信息也进行加密,防止了通过这些信息推断出数据内容的可能性,增强了数据的...

    AES加密算法在Linux文件系统中的设计与研究.pdf

    总的来说,这篇论文为Linux系统开发提供了一种创新的解决方案,通过AES加密算法提升文件系统的安全性,对于操作系统开发人员和系统安全研究者具有重要的参考价值。它展示了如何将现代密码学技术应用于实际操作系统中...

    linux 脚本加密文件

    1. 安装`shc`:首先,你需要在Linux系统上安装`shc`。如果你的发行版有包管理器,比如`apt`(Ubuntu/Debian)或`yum`(CentOS/RHEL),可以通过命令`sudo apt install shc`或`sudo yum install shc`来安装。如果没有...

    加密优化Linux下的PHP代码.pdf

    标题中的“加密优化Linux下的PHP代码”指的是在Linux操作系统环境下,对PHP代码进行加密和优化以提高代码的安全性和性能。这种做法通常是为了防止未经授权的修改或盗窃,保护开发者的工作成果。 描述中的“加密”...

    雷克沙u盘加密客户端linux端

    《雷克沙U盘加密客户端在Linux环境下的应用与安全》 在数字化时代,数据的安全性成为了企业和个人用户关注的重点。雷克沙作为知名的存储设备制造商,提供了专门的U盘加密客户端,旨在保护用户的数据安全。本文将...

    linux版minio未加密最新版本V20220526

    7. **数据安全**:尽管此版本未加密,但你仍然可以通过设置访问控制策略(ACL)、使用SSL/TLS加密通信或在客户端对数据进行加密来提高安全性。 8. **监控与维护**:使用`systemctl status minio`查看服务状态,使用...

    upx-3.04-i386_linux.rar_UPX_linux 加密_upx linux_upx 加密

    UPX(Ultimate Packer for eXecutables)是一款著名的开源软件,用于对可执行文件进行压缩和加密,以减小程序的体积并提供一定的保护措施。标题中的"upx-3.04-i386_linux.rar"指的是UPX工具的3.04版本,专为32位...

    RSA加密解密之Linux C语言版

    **RSA加密解密之Linux C语言版** RSA(Rivest-Shamir-Adleman...总的来说,了解并掌握RSA加密解密的原理和C语言实现,以及如何在Linux环境下进行移植和优化,对于任何IT专业人员来说,都是增强其技术能力的重要一步。

    rsa.rar_RSA linux_rsa_加密解密 RSA C_加密解密 linux_加解密

    字符串可以直接进行加密操作,而文件加密则需要先将文件读入内存,然后对内存中的数据进行加密,最后将加密后的数据写回文件。 5. **实现细节**:在rsa.c文件中,可能包含了实现上述功能的代码。这可能包括了大数...

    Linux下的彩票管理系统

    总的来说,这个彩票管理系统项目涵盖了Linux系统编程、数据库操作、文件组织结构等多个方面,对于想要深入理解Linux环境下软件开发的初学者而言,是一个宝贵的实践平台。通过这个项目,你可以学习到如何在Linux环境...

    app-src.rar_Linux 文件传输_linux app_linux 文件加密_文件传输 linux_文件传输 安全

    本资源"app-src.rar"是一个针对Linux系统的文件传输应用源码,它强调了安全性和加密功能,特别是使用SSL(Secure Sockets Layer)协议进行数据加密传输。SSL是互联网上广泛使用的安全通信协议,能确保数据在网络中...

    浅谈Linux系统安全及应用.pdf

    加密文件系统是Linux系统安全中的一种重要机制。加密文件系统可以有效防止非法入侵者窃取用户的机密数据。在多个用户共享一个系统的情况下,加密文件系统可以很好地保护用户的私有数据。加密文件系统就是将加密服务...

    linux下的c++实现socket文件传输功能

    在Linux环境下,C++实现基于Socket的文件传输是一项常见的任务,尤其在分布式系统、网络编程以及服务器开发中。Socket是网络通信的一种接口,它允许进程间通过网络进行数据交换。本篇文章将深入探讨如何利用C++在...

    IPGuard-Linux基础与加密客户端.pdf

    Linux系统对文件权限控制严格,通过读(r)、写(w)、执行(x)权限进行管理,适用于不同的用户和用户组。Linux还支持多种文件类型,包括常规文件、目录、链接文件等。 常用命令和软件: Linux系统中常使用的命令...

Global site tag (gtag.js) - Google Analytics