OpenSSL:俗称安全套接字
它可以实现数据加密:
SSL全称为:Secure Socket Layer可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的保密性和可靠性,SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要求建立在可靠的传输层协议(TCP)之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
一、OpenSSL加密解密的种类及对应的算法
1、对称加密:使用同一种算法同一个密码对数据进行加密解密;
算法:DES、3DES、AES、Blowfish、Towfish、IDEA、RC6、CAST5
2、非对称加密之公钥加密:公钥从私钥中提取而来,使用私钥加密的文件,只能使用公钥解密,反 之亦然;
算法:RSA、 DSA、 ELGamal、 DH
3、非对称加密之单向加密:只能加密,不能解密,用于提取数据的特征码。
算法:md5、 sha系列256、384、512、128
二、OpenSSL一次加密通信的过程:
发送者:
1.使用单向加密算法提取数据特征码
2.使用自己的私钥加密特征码附加在数据后面
3.生成用于对称加密的临时密钥
4.用此临时密钥加密数据和已经使用私钥加密后的特征码
5.使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后放
接受者:
使用自己的私钥解密加密的临时密钥,从而获取对称密钥
2.使用对称密钥解密对称加密的数据和私钥加密的特征码密文,从而获得数据和特征码密文 3.使用对方发送的公钥解密特征码密文,从而获得数据特征码
4.使用与对方同样的党项加密算法计算出数据特征码,并与解密而来的特征码进行比较
三、OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
组成部分:
(1)libcrypto:加密、解密库文件;
(2)libssl: ssl协议实现
(3)openssl:多用途命令行工具,每种功能都使用专用的子命令来实现
2.openssl命令使用格式
openssl command [options] [csr_file] [options] [crt_file] [options]
#openssl+子命令+选项+参数
3.命令的分类:
标准命令
消息摘要命令
加密、解密相关的命令
4.可以通过输入openssl a 回车可以查看子命令
可以再次使用man命令来查看子命令的用法
四、使用OpenSSL加密、解密文件
1.对称加密
使用enc工具:
加密:# openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE
解密:# openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE
单向加密:
提取文件特征码
# openssl dgst -CIPHER /PATH/TO/SOMEFILE...
生成用户密码:
# openssl passwd -1 -salt 8bits随机数
-1:默认为md5算法
生成随机数:
# openssl rand -hex|-base64 NUM
-base64:文本编码
NUM:生成位数
可以使用生成的随机数来生成密码:
密码自动保存在/etc/shadow
公钥加密生成密钥对儿:
操作过程:生成私钥
# openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS
从私钥中手动提取公钥:
# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout