Openssl加密解密原理:
示例:
比如A与B通信发送数据:
加密原理:
在A把要发送的内容通过单向加密方式进行数据指纹计算,计算出数据指纹后,会用自己的私钥加密数据指纹,并把加密的数据指纹添加到原数据的后面。然后对整个数据(原数据+数据指纹)进行对称加密算法进行计算(让明文转换成密文),得出的数据为整个数据的密码,再用B的公钥进行这个密码进行加密,并放到这个数据的后面一并发给B。
解密原理:
1、B用自己的私钥能够解密---------至此说明数据保密的。
2、B用私钥解密出来的密码,去解密整个数据得到明文(从密文转换成明文),B拿到数据后,会用A的 公钥去解密,能够解密说明是A发过来的。------到此能确定A的身份
3、B会用A的公钥解密出来的数据的特征码, B会用单向加密算法对数据进行加密,得出特征码与用公 钥解密出来的特征码进行比较,相同则说明数据是完整的----------到此能够确定数据的完整性
怎么可靠得到对方的公钥?这里我们引出了CA证书颁发机构
A向CA索要证书,CA进行审核后进行颁发证书。
颁发证书的过程怎么保证证书的完整性:
CA加密:CA会通过A提供的信息生成证书,并会对证书进行单向加密,生成数据指纹放到证书的后 面,CA在用自己的私钥对整个数据(证书+数据指纹)进行加密一并发给A。
A进行解密验证证书
1、 A收到证书后会用CA的公钥进行解密,如果能够解密----说明证书是CA颁发的
2、 A在用单向加密计算数据得出特征码,并与用CA公钥解密出来的特征码进行比较,相同说明证书 是完整的------能够得出证书的完整性,没有在传输中被串改过。
公钥加密算法:
RSA:用户身份验证和数据的加密解密
DSA:只能用于身份验证
单向加密算法:
md5:128bits
sha1:160bits
sha256
sha384
sha512
对称加密算法:
DES,数据加密标准,转轮机。56位密钥算法
3DES,是DES的3倍安全性
AES:目前常用的高级加密算法 、128位、256位,512,384,
基本命令使用方法和示例:
#openssl version #查看openssl版本信息
#openssl speed md4 #MD4加密数据模块大小所用的时间
# openssl enc -des3 -a -salt -in /path/from/somefile-out /path/to/somecipherfile #对称加密的格式
# openssl enc -d -des3 -a -salt -in/path/from/somecipherfile -out /path/to/somefile #对称解密密的格式
enc #对称算法
-des3 #加密机制
-a #是基于base64来处理数据
-salt #加点佐料
-in #输入路径
-out #输出路径
示例:加密[root@wukuiyum.repos.d]# openssl enc -des3 -a -salt -in ning.repo.old -out ningrepo
enterdes-ede3-cbc encryption password:
Verifying- enter des-ede3-cbc encryption password:
# openssl dgst [-md5|-sha1] [-out/path/to/filename] /path/from/somefile #单向加密格式并指定路径
示例:[root@localhost /]# openssl dgst -md5 -out /hong inittab ---输出到指定文件中
[root@localhost/]# cat hong
MD5(inittab)=f7b815b06c5734e8aab5b3ece75a6ae
#openssl passwd -1 –salt 12345 ---------生成用户密码
-1:MD5加密算法
-salt12345: 自己指定佐料
# openssl rand -base64|-hex num ---生成随机数:
示例:
[root@localhost /]# openssl rand -hex 4
cc86f4c0
生成私钥:
# (umask 077;openssl genrsa -out /path/to/keyfileNUMBEROFBITS )当前用户生成私钥并储存至指定的文件中,并给生成的私钥文件一个权限。
示例:[root@wukui yum.repos.d]# (umask 077 ;openssl genrsa -out ning3 2048)
Generating RSA private key, 2048 bitlong modulus
...................+++
.........................................................................................................+++
e is 65537 (0x10001)
提取公钥:
# openssl rsa-in /path/from/private_key_file –pubout
示例:[root@localhost /]# openssl rsa -in ning3 -pubout -out ning4---把提出出来的公钥输出到一个文件中
writing RSA key
本文出自 “奋斗的人” 博客,请务必保留此出处http://wodemeng.blog.51cto.com/1384120/1534121
Openssl加密解密原理与命令使用--尚未完善,布布扣,bubuko.com
原文:http://wodemeng.blog.51cto.com/1384120/1534121