2,保证数据的完整性
3,保证数据的私密性
对数据的私密性要求,我们可以通过对数据进行加解密来完成。如下图所示:
通过OpenSSL提供FTP+SSL/TLS认证功能,并实现安全数据传输
Linux下生成OpenSSL证书
Apache服务器OpenSSL升级
OpenSSL在Linux Eclipse下使用的完整过程-附截图和测试程序
数据加密(encryption):使用一个密钥(key)并通过一种加密算法将明文(plaintext)
加密成密文(ciphertext)。
数据解密(decryption):是数据加密的逆向过程。通过密钥将密文解密成明文。
注:图中加解密的Key可以是同一个密钥,也可以是不同的密钥。
根据加解密Key的不同将加密体系分为两种:
1,对称加密
特点:使用同一个密钥进行加解密
优点: 加密速度快
缺点:秘钥传递问题
常见的对称加密算法有:DES,3DES,AES等
2,非对称加密
特点:数据传输双方事先都必须产生一对密钥
一个称为公钥
一个称为私钥
公钥加密的数据,只有对应的私钥才能解密
私钥加密的数据,只有对应的公钥才能解密
优点:解决了秘钥传递问题
缺点:加密速度慢
常见的非对称加密算法有:RSA,DH等
对称加密图例:
图注: 发送方利用自己的密钥(Key)对明文数据进行加密;
接收方必须得到发送方的密钥(Key);
接收方利用发送方的密钥对密文进行解密;
如果密钥在传输过程中被第三方获悉,那此次加密的私密性得不得保障。
对称加密openssl实现:
加密数据:
格式:openssl enc -ciphername -k password -in file1 -out file2
说明:
enc 加密关键字
-ciphername 指定加密算法
-k 指定口令关键字
password 口令
-in 指定输入文件(file1)
-out 指定输出文件(file2)
解密数据:
格式:openssl enc -ciphername -k password -d -in file -out file2
说明:-d 解密
其他参数同上
openssl支持的加密算法:DES,DES3,RC2,RC5,AES256等
实例:
加密:
openssl enc -des3 -k 123456 -in test.txt -out test.bin
解密:
openssl enc -des3 -k 123456 -d -in test.bin -out test1.txt
非对称加密图例:
图注:首先通讯双方都产生一对密钥;
数据发送方得到数据接收方的公钥;
数据发送方利用数据接收方的公钥对数据进行加密;
数据接收方利用自己的私钥对加密数据进行解密;
数据接收方最终得到明文的数据。
任何一方得到接收方的公钥,也解密不了传输中的数据。
非对称加密openssl实现:
产生密钥对:
格式:openssl genrsa -out file 1024
openssl rsa -in file -pubout
说明:
genrsa 使用rsa算法产生密钥
-out 指定输出文件
1024 指定算法强度 单位bit
rsa 使用rsa算法产生密钥
-in 指定输入文件
-pubout 从私钥中提取公钥
使用公钥加密数据:
格式: openssl rsautl -in file -out file -inkey file -pubin -encrypt
说明:
rsautl 使用rsautl对文件进行加密
-in 指定输入文件(需要被加密的文件)
-inkey 指定输入密钥文件
-pubin 指定-inkey输入的是一个公钥文件
-encrpt 表示加密
使用私钥解密:
格式: openssl rsautl -in file -out file -inkey file -decrypt
说明:
-inkey 指定输入密钥文件(这里应该是私钥文件)
-decrypt 表示解密
其他同上
实例:
产生密钥对:
openssl genrsa -out priv.key 1024 //产生私钥
openssl rsa -in priv.key -pubout > pub.key //提取公钥
使用公钥加密数据:
openssl rsautl -in test.txt -out test.bin -inkey pub.key -pubin -encrypt
使用私有解密:
openssl rsautl -in test.bin -out test2.txt -inkey priv.key -decrypt
总结:虽然非对称加密体系实现了密钥交换的问题,但其本身算法实现复杂导致其加密速度慢。
于是在使用中,人们一般将对称加密和非对称加密二者结合起来使用。