Posted on 2009-12-14 10:07
S.l.e!ep.¢% 閱讀(677)
評(píng)論(0) 編輯 收藏 引用
【openssl資源】
作者:Eric Yang等
官方網(wǎng)站:http://www.openssl.org
中文網(wǎng)站推薦:http://gdwzh.126.com
當(dāng)前版本: openssl-0.9.7
【Cryptlib】
作者:Wei Dai
下載網(wǎng)站:http://www.eskimo.com/~weidai/cryptlib.html
當(dāng)前版本:Version 5.0
目前開(kāi)放源代碼的加密庫(kù)中,openssl和cryptlib都是比較流行的,本文將根據(jù)自己的一點(diǎn)理解對(duì)這兩個(gè)庫(kù)作一些比較,希望能對(duì)大家有用。這兩個(gè)庫(kù)的構(gòu)造思想和目的都不太一樣. Openssl主要是針對(duì)SSL/TLS協(xié)議的實(shí)現(xiàn),SSL的功能體現(xiàn)的非常完善,而算法庫(kù)只是一個(gè)附帶的必要部分,當(dāng)然也是非常重要和完善的一個(gè)部分。Crypylib則就是實(shí)現(xiàn)了加密算法以及相關(guān)的一些編碼標(biāo)準(zhǔn)。
【openssl的組成和特點(diǎn)】
openssl是一個(gè)非常優(yōu)秀的SSL/TLS開(kāi)放源碼軟件包,它包括SSL庫(kù)、加密算法庫(kù)以及應(yīng)用程序三大部分,并提供了測(cè)試程序和一些應(yīng)用例子,實(shí)現(xiàn)了SSL/TLS協(xié)議和其相關(guān)的PKI標(biāo)準(zhǔn)。openssl因?yàn)殚_(kāi)發(fā)的比較早,所以采用了c語(yǔ)言作為編寫的語(yǔ)言,但是,openssl里面確可以找到很多面向?qū)ο蟮乃枷?,如BIO的封裝就是一個(gè)典型的例子。對(duì)于剛剛開(kāi)始接觸openssl的技術(shù)人員來(lái)說(shuō),可能會(huì)覺(jué)得有點(diǎn)困難,因?yàn)閛penssl的結(jié)構(gòu)非常膨大,即便要閱讀完其非常不完善的文檔,工作量也是非常膨大的。建議開(kāi)始接觸openssl的時(shí)候,除了有一些基本的密碼學(xué)和PKI的概念外,最好從使用它提供的一些應(yīng)用程序開(kāi)始。其實(shí),openssl的應(yīng)用程序已經(jīng)很完善,許多CA就是基于這些基礎(chǔ)上做成的。
對(duì)于很多人來(lái)說(shuō),openssl應(yīng)用程序就足以完成他們需要的功能,openssl應(yīng)用程序主要提供了下列的一些功能:
1.各種類型密鑰以及密鑰參數(shù)的生成和格式轉(zhuǎn)換功能
2.使用各種加密算法進(jìn)行數(shù)據(jù)加密的功能
3.證書請(qǐng)求、證書生成和簽發(fā)以及證書其它相關(guān)標(biāo)準(zhǔn)的轉(zhuǎn)換功能,實(shí)現(xiàn)了一個(gè)CA的功能
4.信息摘要算法以及其相關(guān)編碼的實(shí)現(xiàn)
5.SSL協(xié)議模擬客戶端和服務(wù)器端的實(shí)現(xiàn),可以用來(lái)測(cè)試SSL服務(wù)器和SSL客戶端程序。
【Cryptlib的組成和特點(diǎn)】
Cryptlib實(shí)現(xiàn)了各種公開(kāi)密鑰算法、對(duì)稱加密算法、數(shù)字簽名算法、信息摘要算法以及其相關(guān)的其它算法等等。它采用C++語(yǔ)言編寫而成,因?yàn)槭敲嫦驅(qū)ο笳Z(yǔ)言,所以對(duì)于初學(xué)者來(lái)說(shuō)更容易理清其結(jié)構(gòu)。該庫(kù)沒(méi)有提供應(yīng)用程序,只是作為庫(kù)函數(shù)提供應(yīng)用。因?yàn)榛贑++面向?qū)ο蟮乃枷?,其算法的剝離相對(duì)于openssl來(lái)說(shuō)可能更加容易。對(duì)于不需要涉及SSL協(xié)議的技術(shù)人員來(lái)說(shuō),使用該庫(kù)函數(shù)應(yīng)用是一個(gè)不錯(cuò)的選擇。????
【應(yīng)用現(xiàn)狀以及建議】
目前,很多CA以及其它PKI商業(yè)程序都是基于openssl開(kāi)發(fā)的,基于openssl開(kāi)發(fā)的好處周期非常短,而且功能強(qiáng)大。而Cryptlib因?yàn)閮H僅局限于加密算法,所以其應(yīng)用沒(méi)有openssl廣泛,但是對(duì)于只需要加密算法的情況來(lái)說(shuō),這是一個(gè)更好的選擇。
建議如果你的應(yīng)用涉及到SSL等PKI協(xié)議,應(yīng)該使用openssl,如果只是應(yīng)用一些加密算法,則建議使用Cryptlib.