1. 程式人生 > 實用技巧 >OpenSSL入門基礎之加密、解密

OpenSSL入門基礎之加密、解密

說到OpenSSL,首先要提的是SSL。我們在日常上網的時候,恐怕沒有人願意被網路上的其他人監聽到我們的上網行為。因此就需要一種協議為我們的網路通訊保駕護航。SSL協議就是基於這樣的工作背景開發的,能使使用者跟伺服器應用之間的通訊不被***者竊聽,並且始終對伺服器進行認證,可選擇的對使用者進行認證。

SSL協議通常建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立於SSL協議之上。SSL協議在應用層協議通訊之前就已經完成加密演算法、通訊金鑰的協商及伺服器認證工作。在此之後應用層協議所傳送的資料都會被加密,從而保證通訊的保密性。

s所謂加密,只不過是將明文通過某種機制轉換成密文,網路通訊時,使用的加密安全機制有:對稱加密,公鑰加密,單向加密。

對稱加密的特性與缺陷:加密解密使用同一個金鑰,將明文分割成固定大小的塊,逐個進行加密。其缺陷在於通訊雙方要管理的金鑰過多,而且金鑰分發困難。其加密演算法有:DES、3DES、AES。

公鑰加密的特性:金鑰成對出現,其加密演算法有:RSA、DSA。其用途有:一是用於身份認證:傳送方使用自己的私鑰加密資料,接收方使用與之公鑰解密;二是用於金鑰交換:傳送方使用接收方的公鑰加密資料,接收方使用自己的私鑰解密。公鑰在私鑰中提取出來

單向加密的特性:定向輸出,有雪崩效應。其加密演算法有:MD5、SHA1、SHA256、SHA384、SHA512。常用於提取資料的特徵碼。

今年4月10號安全協議OpenSSL爆出本年度最嚴重的安全漏洞“心臟出血”。使人們開始重視這個開源協議。那麼OpenSSL到底是什麼呢?其實OpenSSL可以看作是SSL的庫,由openssl多用途的命令列工具、公共加密庫libcrypto、以及ssl協議庫libssl三大元件組成。

openssl多用途的命令列工具可用於實現對稱加密

openssl enc -e -對稱加密演算法 -a -salt -in 需要加密的檔案 -out 加密後的檔案輸出路徑

例如,對/etc/fstab這個檔案使用DES3演算法加密:openssl enc -e -des3 -a -salt -in /etc/fstab -out /tmp/fstab

wKiom1SFonugr1_xAAGcPZeL5G8013.jpg

加密結果:

wKiom1SFozqz_D9eAAoQl_-GXPo583.jpg

解密:openssl enc -d -對稱加密演算法 -a -salt -in 需要解密的檔案 -out 解密後的檔案輸出路徑

例如,將上面加密的檔案解密:openssl enc -d -des3 -a -salt -in /tmp/fstab -out /tmp/Fstab

wKiom1SFo-LgR1P8AAFEXNmHFG0852.jpg

解密結果:

wKiom1SFpDjjnZmBAASz2Vq0XHo435.jpg

還可以用於公鑰加密中的金鑰交換:(umask 077;openssl genrsa -out 輸出私鑰檔案路徑)

從私鑰中提取公鑰:openssl rsa -in 私鑰檔案路徑 -pubout

注:()表示命令在子shell中執行,umask 077 保證了私鑰檔案的訪問許可權

wKiom1SFsE2hm-QAAAgUT6RMLF8130.jpg

wKioL1SFsROjSTPKAAKmSbXQWKQ011.jpg

還可用於單向加密:openssl dgst -md5|-sha1 -out 檔案輸出路徑 要加密的檔案

例如,將/etc/passwd使用md5加密:openssl dgst -md5 -out /tmp/md5passwd /etc/passwd

wKiom1SFpoSA9RYTAAGmJaizMQk824.jpg

還可以用於生成使用者密碼:openssl passwd -1 -salt SALT_STRING 使用者密碼

wKioL1SFqPjy9O-ZAALpquDuNrE903.jpg

還可以用於生成隨機數:openssl rand -hex 位元組數

wKiom1SFqNnyu7yqAASIEZEs6Tc623.jpg

轉載於:https://blog.51cto.com/itzhi/1588476