openssl加密、解密


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.使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后放       

接受者:           

  1. 使用自己的私钥解密加密的临时密钥,从而获取对称密钥          

2.使用对称密钥解密对称加密的数据和私钥加密的特征码密文,从而获得数据和特征码密文           3.使用对方发送的公钥解密特征码密文,从而获得数据特征码           

4.使用与对方同样的党项加密算法计算出数据特征码,并与解密而来的特征码进行比较 

三、OpenSSL            

OpenSSL 是一个强大的安全套接字层密码库,包括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。     

  1. 组成部分:        

(1)libcrypto:加密、解密库文件;  

(2)libssl: ssl协议实现  

(3)openssl:多用途命令行工具,每种功能都使用专用的子命令来实现     

2.openssl命令使用格式        

openssl command [options] [csr_file] [options] [crt_file] [options] 

#openssl+子命令+选项+参数    

3.命令的分类:

    标准命令

    消息摘要命令

    加密、解密相关的命令

4.可以通过输入openssl a 回车可以查看子命令

wKiom1V1p77Aiy0KAABKjKQMUow949.jpg

    可以再次使用man命令来查看子命令的用法

四、使用OpenSSL加密、解密文件

1.对称加密

                        使用enc工具:

加密:# openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE     

                                             wKioL1V1sLzj-HfJAABp862D_oE289.jpg

解密:# openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE

                                            wKiom1V1rsCByNKlAACk-NUy-OY911.jpg

单向加密:

提取文件特征码

# openssl dgst -CIPHER /PATH/TO/SOMEFILE...

                        wKioL1V1saiQXomIAAA9WWju2As596.jpg

生成用户密码:

# openssl passwd -1 -salt 8bits随机数

                        wKioL1V1sjTyjBhiAAA_ZaBhOfY437.jpg

                                                 -1:默认为md5算法

生成随机数:

# openssl rand -hex|-base64 NUM

                        wKiom1V1seWABjT3AABBGiuaZfs152.jpg

                                               -base64:文本编码

                                                NUM:生成位数

                可以使用生成的随机数来生成密码:

                spacer.gif  wKiom1V1smfh4NHTAACbqCbf5c8086.jpg      

                码自动保存在/etc/shadow

公钥加密生成密钥对儿:

    操作过程:生成私钥

    # openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS

                                         wKioL1V1tlbgXlmeAACNLG-gzg4278.jpg             从私钥中手动提取公钥:

   # openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout

                                        wKioL1V1txSxulGDAAFD9-zyjQA858.jpg



你可能感兴趣的:(解密,OpenSSL加密)