安全与加密-使用gpg实现加密与解密

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全与加密-使用gpg实现加密与解密相关的知识,希望对你有一定的参考价值。

对称加密算法


加密和解密使用同一个密钥

常见的算法:

DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5

? 特性:

1、加密、解密使用同一个密钥,效率高

2、将原始数据分割成固定大小的块,逐个进行加密

? 缺陷:

1、密钥过多

2、密钥分发

3、数据来源无法确认


非对称加密算法


公钥加密:密钥是成对出现

? 公钥:公开给所有人;public key

? 私钥:自己留存,必须保证其私密性;secret key

? 特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

功能:

? 数字签名:主要在于让接收方确认发送方身份

? 对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方

? 数据加密:适合加密较小数据

? 缺点:密钥长,加密解密效率低下


常见的算法:

RSA(加密,数字签名),

DSA(数字签名),

ELGamal


来查看本机系统中ssh中的密钥都长啥样呢。pub结尾的就是公钥,key结尾的就是私钥

#ls /etc/ssh/

ssh_host_dsa_key.pub  ssh_host_key.pub  ssh_host_rsa_key.pub

ssh_config  ssh_host_dsa_key  ssh_host_key          ssh_host_rsa_key


查看系统中密码加密算法

#authconfig --test|grep password

shadow passwords are enabled

password hashing algorithm is sha512


常见加密算法工具

md5: 128bits、 sha1: 160bits、 sha224

sha256、 sha384、 sha512


? 常用工具

md5sum

sha1sum

sha512sum

openssl

gpg

? rpm -V

需要先导入光盘中的GPG-KEY:

#rpm --import /dvd/RPM-GPG-KEY-CentOS-6

或安装好的系统的

#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#rpm -K /dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm

/dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK


可以利用加密算法对文件进行计算以便发现是否被篡改

md5sum --check 保存的计算结果文件

#sha512sum --check file.sum

b: FAILED

sha512sum: WARNING: 1 of 1 computed checksum did NOT match


使用gpg实现对称加密与解密

? 对称加密file文件

#gpg -c sshd_config

技术分享图片技术分享图片

输入2次密码之后,会生成一个sshd_config.gpg


#file sshd_config.gpg

sshd_config.gpg: data


解密此加密过的file,输入正确的密码即可

-o 是指定输出位置,必须放在前面。

#gpg -o /tmp/sshd -d sshd_config.gpg


使用gpg工具实现非对称公钥加密与解密


#gpg --gen-key

gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want: 选择加密方式

(1) RSA and RSA (default)

(2) DSA and Elgamal

(3) DSA (sign only)

(4) RSA (sign only)

Your selection? 1

RSA keys may be between 1024 and 4096 bits long.选择加密长度

What keysize do you want? (2048) 默认回车

Requested keysize is 2048 bits

Please specify how long the key should be valid.选择密钥有效期

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) 1y

Key expires at Sun 13 Jan 2019 08:02:46 PM CST

Is this correct? (y/N) y 是否确认以上信息

GnuPG needs to construct a user ID to identify your key.

Real name: gpg 保存一个名字

Name must be at least 5 characters long 至少需要5个字符

Real name: gpg-key-a

Email address: [email protected] 邮件地址

Comment:  备注

You selected this USER-ID:

"gpg-key-a <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 保存是O

再接输入2次密码

然后,加密过程就根据加密长度,会让你随机输入字符,总这就是你不断的敲东西啦。可以开多个终端窗口,批量发送信息。挺有意思的。

这个操作在图形界面下只需要动动鼠标就好了

技术分享图片技术分享图片

生成了一对密钥。

#ls ~/.gnupg/

gpg.conf  private-keys-v1.d  pubring.gpg  pubring.gpg~  random_seed  secring.gpg  trustdb.gpg

pubring.gpg 公钥

secring.gpg 私钥

#gpg -k

/root/.gnupg/pubring.gpg

------------------------

pub   2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid                  gpg-key-a <[email protected]>

sub   2048R/215FAF14 2018-01-13 [expires: 2019-01-13]


导出公钥

#gpg -a --export -o gpg-a-pubkey


在另外一个系统导入公钥

#gpg --import gpg-a-pubkey

#gpg -k   能看到导入的公钥

/root/.gnupg/pubring.gpg

------------------------

pub   2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid                  gpg-key-a <[email protected]>

sub   2048R/215FAF14 2018-01-13 [expires: 2019-01-13]


加密文件

#gpg -e -r gpg-key-a gpg.conf     -r 是指定加密的公钥名


回到导出公钥的主机,执行解密

#gpg -d gpg.conf.gpg

技术分享图片技术分享图片

成功

总结,用你的公钥来加密文件,只有你的私钥才能解密。安全性提高。


以上是关于安全与加密-使用gpg实现加密与解密的主要内容,如果未能解决你的问题,请参考以下文章

数据的加密与解密

python - 密码加密与解密

利用Gpg4win来打造一个安全的加密文件

电子病历系统安全性-加密解密

PHP实现RSA与RSA256加密,解密,加签,验签

PHP实现RSA与RSA256加密,解密,加签,验签