天天看點

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 回車可以檢視子指令

openssl加密、解密

    可以再次使用man指令來檢視子指令的用法

四、使用OpenSSL加密、解密檔案

1.對稱加密

                        使用enc工具:

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

openssl加密、解密

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

openssl加密、解密

單向加密:

提取檔案特征碼

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

openssl加密、解密

生成使用者密碼:

# openssl passwd -1 -salt 8bits随機數

openssl加密、解密

                                                 -1:預設為md5算法

生成随機數:

# openssl rand -hex|-base64 NUM

openssl加密、解密

                                               -base64:文本編碼

                                                NUM:生成位數

                可以使用生成的随機數來生成密碼:

openssl加密、解密
openssl加密、解密

                密碼自動儲存在/etc/shadow

公鑰加密生成密鑰對兒:

    操作過程:生成私鑰

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

openssl加密、解密

            從私鑰中手動提取公鑰:

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

openssl加密、解密

轉載于:https://blog.51cto.com/10086101/1659879

繼續閱讀