Openssl加密解密原理与命令使用

时间:2024-05-22 15:35:01


出处:http://wodemeng.blog.51cto.com/1384120/1534121/


Openssl加密解密原理:


  比如AB通信发送数据:

Openssl加密解密原理与命令使用

加密原理:

A把要发送的内容通过单向加密方式进行数据指纹计算,计算出数据指纹后,会用自己的私钥加密数据指纹,并把加密的数据指纹添加到原数据的后面。然后对整个数据(原数据+数据指纹)进行对称加密算法进行计算(让明文转换成密文),得出的数据为整个数据的密码,再用B的公钥进行这个密码进行加密,并放到这个数据的后面一并发给B

 

解密原理:

1B用自己的私钥能够解密---------至此说明数据保密的。

2B用私钥解密出来的密码,去解密整个数据得到明文(从密文转换成明文),B拿到数据后,会用A的    公钥去解密,能够解密说明是A发过来的。------到此能确定A的身份

3B会用A的公钥解密出来的数据的特征码, B会用单向加密算法对数据进行加密,得出特征码与用公   钥解密出来的特征码进行比较,相同则说明数据是完整的----------到此能够确定数据的完整性


申请证书 

     怎么可靠得到对方的公钥?

     这里我们引出了CA证书颁发机构; ACA索要证书,CA进行审核后进行颁发证书。

           

 颁发证书的过程怎么保证证书的完整性:

Openssl加密解密原理与命令使用

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,DES3倍安全性

              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        #输出路径


例:对称加密文件(大家可以加密一些私密东西,嘻嘻!!冷笑话)

[[email protected]]# 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 #单向加密格式并指定路径

示例:[[email protected] /]# openssl dgst -md5 -out /hong inittab ---输出到指定文件中

                     [[email protected]/]# cat hong

                     MD5(inittab)=f7b815b06c5734e8aab5b3ece75a6ae


#openssl passwd -1 –salt 12345 ---------生成用户密码

        命令解释: 

              -1:MD5加密算法

              -salt 12345 自己指定佐料12345

# openssl rand -base64|-hex  num ---生成随机数:

       示例:

              [[email protected] /]# openssl rand -hex 4

                     cc86f4c0


生成私钥:

# (umask 077;openssl genrsa  -out /path/to/keyfileNUMBEROFBITS )当前用户生成私钥并储存至指定的文件中,并给生成的私钥文件一个权限。

示例:[[email protected] 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

示例:[[email protected] /]# openssl rsa -in ning3 -pubout -out ning4---把提出出来的公钥输出到一个文件中

           writing RSA key


本文出自 “奋斗的人” 博客,请务必保留此出处http://wodemeng.blog.51cto.com/1384120/1534121