多语言展示
当前在线:1477今日阅读:155今日分享:35

linux平台算法加密文件示例:[2]非对称加密

非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。本文分别用以下软件进行非对称加密第一  用GnuPG加密文件第二   用OpenSSL加密文件  GnuPG(GNU Privacy Guard或GPG)是一个以GNU通用公共许可证释出的开放源码用于加密或签名的软件,可用来取代PGP。大多数gpg软件仅支持命令行方式,一般人较难掌握。由于gpg软件开放源代码,很难隐藏后门,因此比pgp等商业软件安全。OpenSSL包含一个命令行工具用来完成OpenSSL库中的所有功能,更好的是,它可能已经安装到你的系统中了。OpenSSL是一个强大的安全套接字层密码库,Apache使用它加密HTTPS,OpenSSH使用它加密SSH,但是,你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
工具/原料
1

Linux centos 5.4 及 GnuPG加密文件 

2

Linux centos 5.4 及 OpenSSL加密文件

方法/步骤
1

GnuPG软件包(Gnu Privacy Guard,Gnu隐私保镖),软件包的名称是gpg。1.创建密钥对创建一个用来发送加密数据和进行解密数据的密钥。执行gpg命令,会在主目录下创建一个.gnupg子目录。在该子目录里面有一个gpg.conf的配置文件,它里面是gpg工具的各种选项及其默认设置值。执行gpg --gen-key命令,生成密钥,如图3-99所示:在图3-99中,确认选择无误后,在最后一行输入“y”,回车。在图3-100中,根据提示输入相关信息。

2

现在已经在.gnupg目录中生成了一对密钥且存在于文件中,进入.gnupg目录进行查看,如图3-101所示。2.提取公共密钥为了使对方使用刚才生成的公共密钥,需要用命令将公共密钥提取出来,发给对方。执行命令gpg --export 3FAF8118 > pub.key,将公共密钥提取到文件pub.key中。

3

3.对方收到公共密钥收到别人的公共密钥后,执行命令gpg --import pub.key把这个公共密钥放到自己的pubring.gpg文件(钥匙环文件)里。如果要删除对方公钥,执行命令gpg --delete-secret-and-public-key3FAF8118。命令的执行如图3-102所示。

4

4.对方用公共密钥加密文件对方执行gpg -ea -r 3FAF8118 gpg_temp.txt对gpg_temp.txt文件进行加密。-e:代表加密。-a:代表ASCII格式。-r:后面是公共密钥标识。3FAF8118:为密钥标识。该命令执行后,在当前目录下生成了一个同名的gpg_temp.txt.asc的文件,即加密后的文件。具体执行过程如图3-104所示。

5

5.我方对加密文件进行解密我方收到gpg_temp.txt.asc文件后,执行gpg -ogpg_temp2.txt -d gpg_temp.txt.asc命令,用私有密钥对加密文件进行解密。-o:输出文件。-d:表示解密。在当前目录下生成了解密后的文件tgpg_temp.txt。具体执行过程如图3-105所示

6

2 用OpenSSL加密文件OpenSSL可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字。网址为:http://www.openssl.org/。SSL是Secure Sockets Layer的缩写,是支持在Internet上进行安全通信的标准,并且将数据密码技术集成到协议中。数据在离开计算机之前被加密,然后只有到达它预定的目标后才被解密。1.安装openssl-0.9.8n[root@localhostDesktop]# tar -xzvf openssl-0.9.8n.tar.gz[root@localhostDesktop]# cd openssl-0.9.8n[root@localhostopenssl-0.9.8n]# ./config--prefix=/root/openssl[root@localhostopenssl-0.9.8n]# make[root@localhostopenssl-0.9.8n]# make install2.产生CA证书修改~/openssl/ssl/openssl.cnf文件中的一行(约42行)为:dir=/root/openssl/ssl/misc/demoCA,将产生的CA证书放置在/root/openssl/ssl/misc/demoCA下。[root@localhostopenssl-0.9.8n]# cd /root/openssl/ssl/misc/[root@localhostmisc]# cp ../openssl.cnf /etc/pki/tls/openssl.cnf[root@localhostmisc]# dirCA.pl  CA.sh c_hash  c_info  c_issuer c_name执行CA证书产生脚本CA.sh,如下所示:[root@localhostmisc]# ./CA.sh -newcaCA certificate filename (or enter to create) Making CA certificate ...Generating a 1024 bit RSA private key......................++++++..................................++++++writing new private key to'./demoCA/private/./cakey.pem'Enter PEM pass phrase:Verifying - Enter PEM pass phrase:-----You are about to be asked to enterinformation that will be incorporatedinto your certificate request.What you are about to enter is what iscalled a Distinguished Name or a DN.There are quite a few fields but you canleave some blankFor some fields there will be a defaultvalue,If you enter '.', the field will be leftblank.-----Country Name (2 letter code) [AU]:CNState or Province Name (full name)[Some-State]:HNLocality Name (eg, city) []:XXOrganization Name (eg, company) [InternetWidgits Pty Ltd]:XXUOrganizational Unit Name (eg, section) []:JSJCommon Name (eg, YOUR name) []:ZTGEmail Address []:jsjoscpu@163.com Please enter the following 'extra'attributesto be sent with your certificate requestA challenge password []:123456An optional company name []:COMPUTERUsing configuration from/etc/pki/tls/openssl.cnfEnter pass phrase for./demoCA/private/./cakey.pem:Check that the request matches the signatureSignature okCertificate Details:       Serial Number:           f2:01:3d:54:f6:16:bd:a9       Validity           Not Before: Jun  3 04:15:28 2010GMT           Not After : Jun  2 04:15:28 2013GMT       Subject:           countryName               = CN           stateOrProvinceName       = HN           organizationName          = XXU           organizationalUnitName    = JSJ           commonName                = ZTG           emailAddress              =jsjoscpu@163.com       X509v3 extensions:           X509v3 Subject Key Identifier:               B8:AC:08:62:87:4C:B0:B3:D8:D3:B9:84:6D:04:AA:66:3B:6F:11:F2           X509v3 Authority KeyIdentifier:               keyid:B8:AC:08:62:87:4C:B0:B3:D8:D3:B9:84:6D:04:AA:66:3B:6F:11:F2               DirName:/C=CN/ST=HN/O=XXU/OU=JSJ/CN=ZTG/emailAddress=jsjoscpu@163.com                serial:F2:01:3D:54:F6:16:BD:A9            X509v3 Basic Constraints:                CA:TRUECertificate is to be certified untilJun  2 04:15:28 2013 GMT (1095 days) Write out database with 1 new entriesData Base Updated[root@localhost misc]# [root@localhostmisc]# dir demoCA/cacert.pem  careq.pem certs  crl  index.txt index.txt.attr  index.txt.old  newcerts private  serialcacert.pem就是CA证书,CA私钥存放在private目录。

7

3.以CA产生次级证书在CA证书产生之后,就可以所需要的次级证书,次级证书可应用于数字签名或https等ssl传输加密。(1)产生使用者的密钥文件及CSR文件(CertificateSigning Request)。执行如下命令:[root@localhost misc]# ~/openssl/bin/openssl req-nodes -new -keyoutprivate_key.pem -outprivate_req.pem -days 3650 -config ~/openssl/ssl/openssl.cnf如图3-106所示,根据提示输入相关信息。(2)产生使用者之证书。执行如下命令:[root@localhostmisc]# ~/openssl/bin/opensslca -config ~/openssl/ssl/openssl.cnf -policy policy_anything -out public_key.pem -infiles private_req.pem如图3-107所示,根据提示输入相关信息。

8

(3)文件加密。public_key.pem为公开密钥,如果某人要加密传送一文件,则可以用公钥public_key.pem加密文件。假如某人要传送的文件是openssl_test.txt,加密后文件名为openssl_test.enc。执行如下命令即可:[root@localhostmisc]# ~/openssl/bin/opensslsmime -encrypt -in openssl_test.txt -out openssl_test.encpublic_key.pem文件openssl_test.txt的内容为:openssl_test shi yan!!!。(4)文件解密。收到对方发过来的加密文件openssl_test.enc后,执行如下命令直接查看其内容,如图3-108所示。

9

[root@localhostmisc]# less openssl_test.enc如图3-108所示为密文,不知其意。因此需要解密,执行如下命令,用私钥private_key.pem对openssl_test.enc文件解密:[root@localhostmisc]# ~/openssl/bin/opensslsmime -decrypt -in openssl_test.enc -recip public_key.pem -inkey private_key.pem解密出来的明文如图3-109所示

推荐信息