对称加密算法
加密和解密使用同一个密钥
常见的算法:
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
成功
总结,用你的公钥来加密文件,只有你的私钥才能解密。安全性提高。
原文地址:http://blog.51cto.com/191226139/2060667