OpenSSL是一個(gè)功能豐富且強(qiáng)大的開(kāi)源軟件庫(kù),提供全面的加密與解密方案,適用于網(wǎng)絡(luò)通訊、數(shù)據(jù)保存和身份校驗(yàn)等安全范疇。作為一種廣泛使用的加密工具,它兼容包括SSL和TLS在內(nèi)的多種安全協(xié)議,為我們提供安全連接的保證,它還集成了一系列密碼學(xué)功能與實(shí)用程序,能幫我們創(chuàng)建、管理和校驗(yàn)數(shù)字證書(shū),以及執(zhí)行數(shù)字簽名和密鑰交換等操作。

功能特點(diǎn)
一、安全信道特性
1.數(shù)據(jù)保密性
信息加密就是將明文輸入文件通過(guò)加密算法轉(zhuǎn)換為密文文件以實(shí)現(xiàn)數(shù)據(jù)的保密。加密過(guò)程需要借助密鑰來(lái)加密信息然后再解密。缺少密鑰,便無(wú)法解密加密后的內(nèi)容。加密后的數(shù)據(jù)可以公開(kāi)傳遞,但密鑰需通過(guò)安全方式傳輸。
2.數(shù)據(jù)完整性
加密也能確保信息的一致性。例如:消息驗(yàn)證碼(MAC),可以校驗(yàn)用戶(hù)提供的加密內(nèi)容,接收方能夠利用MAC來(lái)驗(yàn)證加密數(shù)據(jù),保證信息在傳輸過(guò)程中未被篡改。
3.安全驗(yàn)證
加密的另一種用途是作為個(gè)人身份標(biāo)識(shí),用戶(hù)的密鑰可作為其安全驗(yàn)證的憑證。SSL采用公開(kāi)密鑰加密技術(shù)(RSA)作為客戶(hù)端與服務(wù)器端在傳輸機(jī)密資料時(shí)的加密通訊協(xié)議。OpenSSL包含一個(gè)命令行實(shí)用程序,能夠完成該庫(kù)中的所有功能,更便利的是,它可能已預(yù)裝于您的系統(tǒng)中。OpenSSL是一個(gè) robust 的安全套接字層密碼庫(kù),Apache使用它加密HTTPS,OpenSSH使用它加密SSH,然而,您不應(yīng)僅將其視為一個(gè)庫(kù),它還是一個(gè)多用途、跨平臺(tái)的密碼實(shí)用程序。
二、開(kāi)源特點(diǎn)
1.Eric A. Young和Tim J. Hudson從1995年開(kāi)始編寫(xiě)后來(lái)影響深遠(yuǎn)的OpenSSL軟件包,這是一個(gè)限制較少的開(kāi)放源代碼軟件包。Eric A. Young 和Tim J. Hudson是加拿大人,后來(lái)因編寫(xiě)OpenSSL取得成功后進(jìn)入大公司發(fā)展。1998年,OpenSSL項(xiàng)目組接手了該軟件的開(kāi)發(fā)工作,并推出了0.9.1版,至今,其算法已非常完善,支持SSL2.0、SSL3.0以及TLS1.0.
2.OpenSSL使用C語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,這使該庫(kù)具備卓越的跨平臺(tái)性能,對(duì)廣大技術(shù)人員而言是一件非常便利的事情,可以在不同平臺(tái)使用同樣熟悉的資源。它支持Linux、Windows、BSD、Mac、VMS等平臺(tái),這使其具有廣泛的適用性。但掌握C語(yǔ)言總比用C++重寫(xiě)一個(gè)具備類(lèi)似功能的軟件包輕松很多。
OpenSSL 安裝教程
1、獲取openssl軟件后,雙擊運(yùn)行“.exe文件”

2、閱讀安裝許可協(xié)議,選擇我同意許可條款,點(diǎn)擊next下一步

3、選擇安裝位置,例如放在E盤(pán)的E:\software\OpenSSL-Win64下,點(diǎn)擊next下一步

4、創(chuàng)建OpenSSL快捷方式,點(diǎn)擊next下一步

5、選擇The Windows system directory,點(diǎn)擊next下一步

6、安裝程序準(zhǔn)備安裝,點(diǎn)擊Install安裝

7、點(diǎn)擊finish完成,openssl軟件安裝成功

以上全部安裝完畢,要想通過(guò)windows控制臺(tái)使用OpenSSL工具生產(chǎn)密鑰,需配置環(huán)境變量,進(jìn)入系統(tǒng)屬性將安裝目錄添加到環(huán)境變量的path中即可。

OpenSSL安裝前準(zhǔn)備
1、初始化VC++ 6.0 環(huán)境變量(找到vc++ 6.0的安裝目錄下的\VC98\Bin\執(zhí)行如下命令):

2、執(zhí)行Configure命令(配置編譯參數(shù)):

3、運(yùn)行ms\do_ms命令(在使用Configure腳本配置好參數(shù)):
另外兩種方式 如果使用也必須保證本機(jī)安裝有相應(yīng)的編譯器才能使用。
:ms\do_masm (默認(rèn)vc自帶的;也可以自己下載masm并安裝)
:ms\do_nasm (需要下載nasm)

4、運(yùn)行“nmake -f ms\ntdll.mak”命令進(jìn)行代碼編譯(需將目錄切換到OpenSSL目錄下)
如果編譯成功,最后的輸出都在out32dll目錄下:包括可執(zhí)行文件、兩個(gè)dll和兩個(gè)lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib ;把他們放到PATH環(huán)境變量對(duì)應(yīng)的一個(gè)目錄里就可以了。
測(cè)試使用命令“nmake -f ms\ntdll.mak test”
若安裝成功的話,顯示的最后幾行如下圖:

5、配置VC++6.0下的相關(guān)參數(shù)
在VC++ 6.0的工具—》選項(xiàng)—》目錄下的Include files下添加OpenSSL安裝目錄下的include目錄;在Library files下添加out32dll目錄,現(xiàn)在你就可以使用OpenSSL編程了
openssl如何使用?
一、對(duì)稱(chēng)加密
1.對(duì)稱(chēng)加密需要使用的標(biāo)準(zhǔn)命令為 enc ,用法如下:
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64]
[-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md]
[-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]
2.常用選項(xiàng)有:
-in filename:指定要加密的文件存放路徑
-out filename:指定加密后的文件存放路徑
-salt:自動(dòng)插入一個(gè)隨機(jī)數(shù)作為文件內(nèi)容加密,默認(rèn)選項(xiàng)
-e:可以指明一種加密算法,若不指的話將使用默認(rèn)加密算法
-d:解密,解密時(shí)也可以指定算法,若不指定則使用默認(rèn)算法,但一定要與加密時(shí)的算法一致
-a/-base64:使用-base64位編碼格式
3.示例:
加密:]# openssl enc -e -des3 -a -salt -in fstab -out jiami
解密:]# openssl enc -d -des3 -a -salt -in fstab -out jiami
二、單向加密
1.單向加密需要使用的標(biāo)準(zhǔn)命令為 dgst ,用法如下:
openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary]
[-out filename] [-sign filename] [-keyform arg] [-passin arg] [-verify filename] [-prverify
filename] [-signature filename] [-hmac key] [file...]
2.常用選項(xiàng)有:
[-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] :指定一種加密算法
-out filename:將加密的內(nèi)容保存到指定文件中
三、生成密碼
1.生成密碼需要使用的標(biāo)準(zhǔn)命令為 passwd ,用法如下:
openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table] {password}
2.常用選項(xiàng)有:
-1:使用md5加密算法
-salt string:加入隨機(jī)數(shù),最多8位隨機(jī)數(shù)
-in file:對(duì)輸入的文件內(nèi)容進(jìn)行加密
-stdion:對(duì)標(biāo)準(zhǔn)輸入的內(nèi)容進(jìn)行加密
四、生成隨機(jī)數(shù)
1.生成隨機(jī)數(shù)需要用到的標(biāo)準(zhǔn)命令為 rand ,用法如下:
openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
2.常用選項(xiàng)有:
-out file:將生成的隨機(jī)數(shù)保存至指定文件中
-base64:使用base64 編碼格式
-hex:使用16進(jìn)制編碼格式