OpenSSL之安全通讯基础

2,保证数据的完整性

3,保证数据的私密性

对数据的私密性要求,我们可以通过对数据进行加解密来完成。如下图所示:

OpenSSL之安全通讯基础

通过OpenSSL提供FTP+SSL/TLS认证功能,并实现安全数据传输

Linux下生成OpenSSL证书

Apache服务器OpenSSL升级

OpenSSL在Linux Eclipse下使用的完整过程-附截图和测试程序

OpenSSL对数组加密解密的完整实现代码

数据加密(encryption):使用一个密钥(key)并通过一种加密算法将明文(plaintext)

加密成密文(ciphertext)。

数据解密(decryption):是数据加密的逆向过程。通过密钥将密文解密成明文。

注:图中加解密的Key可以是同一个密钥,也可以是不同的密钥。

根据加解密Key的不同将加密体系分为两种:

1,对称加密

特点:使用同一个密钥进行加解密

优点: 加密速度快

缺点:秘钥传递问题

常见的对称加密算法有:DES,3DES,AES等

2,非对称加密

特点:数据传输双方事先都必须产生一对密钥

一个称为公钥

一个称为私钥

公钥加密的数据,只有对应的私钥才能解密

私钥加密的数据,只有对应的公钥才能解密

优点:解决了秘钥传递问题

缺点:加密速度慢

常见的非对称加密算法有:RSA,DH等

对称加密图例:

OpenSSL之安全通讯基础

图注: 发送方利用自己的密钥(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实现:

产生密钥对:

格式: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

总结:虽然非对称加密体系实现了密钥交换的问题,但其本身算法实现复杂导致其加密速度慢。

于是在使用中,人们一般将对称加密和非对称加密二者结合起来使用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b62ecf42b0e09171cae1c304d9ad43e6.html