導航:首頁 > 源碼編譯 > openssl對稱加密演算法

openssl對稱加密演算法

發布時間:2025-02-19 20:02:48

㈠ OpenSSL 什麼意思

分都沒有,真郁悶

openssl OpenSSL簡介
SSL是Secure Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標准,目前已有3.0版本。SSL採用公開密鑰技術。其目標是保證兩個應用間通信的保密性和可靠性,可在伺服器端和用戶端同時實現支持。目前,利用公開密鑰技術的SSL協議,已成為Internet上保密通訊的工業標准。安全套接層協議能使用戶/伺服器應用之間的通信不被攻擊者竊聽,並且始終對伺服器進行認證,還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立於SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密演算法、通信密鑰的協商及伺服器認證工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的私密性。通過以上敘述,SSL協議提供的安全信道有以下三個特性: 1.數據的保密性 信息加密就是把明碼的輸入文件用加密演算法轉換成加密的文件以實現數據的保密。加密的過程需要用到密匙來加密數據然後再解密。沒有了密鑰,就無法解開加密的數據。數據加密之後,只有密匙要用一個安全的方法傳送。加密過的數據可以公開地傳送。 2.數據的一致性 加密也能保證數據的一致性。例如:消息驗證碼(MAC),能夠校驗用戶提供的加密信息,接收者可以用MAC來校驗加密數據,保證數據在傳輸過程中沒有被篡改過。 3.安全驗證 加密的另外一個用途是用來作為個人的標識,用戶的密匙可以作為他的安全驗證的標識。SSL是利用公開密鑰的加密技術(RSA)來作為用戶端與伺服器端在傳送機密資料時的加密通訊協定。
什麼是OpenSSL
眾多的密碼演算法、公鑰基礎設施標准以及SSL協議,或許這些有趣的功能會讓你產生實現所有這些演算法和標準的想法。果真如此,在對你表示敬佩的同時,還是忍不住提醒你:這是一個令人望而生畏的過程。這個工作不再是簡單的讀懂幾本密碼學專著和協議文檔那麼簡單,而是要理解所有這些演算法、標准和協議文檔的每一個細節,並用你可能很熟悉的C語言字元一個一個去實現這些定義和過程。我們不知道你將需要多少時間來完成這項有趣而可怕的工作,但肯定不是一年兩年的問題。
首先,應該感謝Eric A. Young和Tim J. Hudson,他們自1995年開始編寫後來具有巨大影響的OpenSSL軟體包,更令我們高興的是,這是一個沒有太多限制的開放源代碼的軟體包,這使得我們可以利用這個軟體包做很多事情。Eric A. Young 和Tim J. Hudson是加拿大人,後來由於寫OpenSSL功成名就之後就到大公司里賺大錢去了。1998年,OpenSSL項目組接管了OpenSSL的開發工作,並推出了OpenSSL的0.9.1版,到目前為止,OpenSSL的演算法已經非常完善,對SSL2.0、SSL3.0以及TLS1.0都支持。
OpenSSL採用C語言作為開發語言,這使得OpenSSL具有優秀的跨平台性能,這對於廣大技術人員來說是一件非常美妙的事情,可以在不同的平台使用同樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,這使得OpenSSL具有廣泛的適用性。不過,對於目前新成長起來的C++程序員,可能對於C語言的代碼不是很習慣,但習慣C語言總比使用C++重新寫一個跟OpenSSL相同功能的軟體包輕松不少。
OpenSSL整個軟體包大概可以分成三個主要的功能部分:密碼演算法庫、SSL協議庫以及應用程序。OpenSSL的目錄結構自然也是圍繞這三個功能部分進行規劃的。
作為一個基於密碼學的安全開發包,OpenSSL提供的功能相當強大和全面,囊括了主要的密碼演算法、常用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。
1.對稱加密演算法
OpenSSL一共提供了8種對稱加密演算法,其中7種是分組加密演算法,僅有的一種流加密演算法是RC4。這7種分組加密演算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它演算法使用的則是64位。事實上,DES演算法裡面不僅僅是常用的DES演算法,還支持三個密鑰和兩個密鑰3DES演算法。
2.非對稱加密演算法
OpenSSL一共實現了4種非對稱加密演算法,包括DH演算法、RSA演算法、DSA演算法和橢圓曲線演算法(EC)。DH演算法一般用戶密鑰交換。RSA演算法既可以用於密鑰交換,也可以用於數字簽名,當然,如果你能夠忍受其緩慢的速度,那麼也可以用於數據加密。DSA演算法則一般只用於數字簽名。
3.信息摘要演算法
OpenSSL實現了5種信息摘要演算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA演算法事實上包括了SHA和SHA1兩種信息摘要演算法,此外,OpenSSL還實現了DSS標准中規定的兩種信息摘要演算法DSS和DSS1。
4.密鑰和證書管理
密鑰和證書管理是PKI的一個重要組成部分,OpenSSL為之提供了豐富的功能,支持多種標准。
首先,OpenSSL實現了ASN.1的證書和密鑰相關標准,提供了對證書、公鑰、私鑰、證書請求以及CRL等數據對象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產生各種公開密鑰對和對稱密鑰的方法、函數和應用程序,同時提供了對公鑰和私鑰的DER編解碼功能。並實現了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標准中提供了對私鑰的加密保護功能,使得密鑰可以安全地進行存儲和分發。
在此基礎上,OpenSSL實現了對證書的X.509標准編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。並提供了一種文本資料庫,支持證書的管理功能,包括證書密鑰產生、請求產生、證書簽發、吊銷和驗證等功能。
事實上,OpenSSL提供的CA應用程序就是一個小型的證書管理中心(CA),實現了證書簽發的整個流程和證書管理的大部分機制。
5.SSL和TLS協議
OpenSSL實現了SSL協議的SSLv2和SSLv3,支持了其中絕大部分演算法協議。OpenSSL也實現了TLSv1.0,TLS是SSLv3的標准化版,雖然區別不大,但畢竟有很多細節不盡相同。
雖然已經有眾多的軟體實現了OpenSSL的功能,但是OpenSSL裡面實現的SSL協議能夠讓我們對SSL協議有一個更加清楚的認識,因為至少存在兩點:一是OpenSSL實現的SSL協議是開放源代碼的,我們可以追究SSL協議實現的每一個細節;二是OpenSSL實現的SSL協議是純粹的SSL協議,沒有跟其它協議(如HTTP)協議結合在一起,澄清了SSL協議的本來面目。
6.應用程序
OpenSSL的應用程序已經成為了OpenSSL重要的一個組成部分,其重要性恐怕是OpenSSL的開發者開始沒有想到的。現在OpenSSL的應用中,很多都是基於OpenSSL的應用程序而不是其API的,如OpenCA,就是完全使用OpenSSL的應用程序實現的。OpenSSL的應用程序是基於OpenSSL的密碼演算法庫和SSL協議庫寫成的,所以也是一些非常好的OpenSSL的API使用範例,讀懂所有這些範例,你對OpenSSL的API使用了解就比較全面了,當然,這也是一項鍛煉你的意志力的工作。
OpenSSL的應用程序提供了相對全面的功能,在相當多的人看來,OpenSSL已經為自己做好了一切,不需要再做更多的開發工作了,所以,他們也把這些應用程序成為OpenSSL的指令。OpenSSL的應用程序主要包括密鑰生成、證書管理、格式轉換、數據加密和簽名、SSL測試以及其它輔助配置功能。
7.Engine機制 Engine機制的出現是在OpenSSL的0.9.6版的事情,開始的時候是將普通版本跟支持Engine的版本分開的,到了OpenSSL的0.9.7版,Engine機制集成到了OpenSSL的內核中,成為了OpenSSL不可缺少的一部分。 Engine機制目的是為了使OpenSSL能夠透明地使用第三方提供的軟體加密庫或者硬體加密設備進行加密。OpenSSL的Engine機製成功地達到了這個目的,這使得OpenSSL已經不僅僅使一個加密庫,而是提供了一個通用地加密介面,能夠與絕大部分加密庫或者加密設備協調工作。當然,要使特定加密庫或加密設備更OpenSSL協調工作,需要寫少量的介面代碼,但是這樣的工作量並不大,雖然還是需要一點密碼學的知識。Engine機制的功能跟Windows提供的CSP功能目標是基本相同的。目前,OpenSSL的0.9.7版本支持的內嵌第三方加密設備有8種,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬體加密設備。現在還出現了支持PKCS#11介面的Engine介面,支持微軟CryptoAPI的介面也有人進行開發。當然,所有上述Engine介面支持不一定很全面,比如,可能支持其中一兩種公開密鑰演算法。
8.輔助功能
BIO機制是OpenSSL提供的一種高層IO介面,該介面封裝了幾乎所有類型的IO介面,如內存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復雜性也降低了很多。
OpenSSL對於隨機數的生成和管理也提供了一整套的解決方法和支持API函數。隨機數的好壞是決定一個密鑰是否安全的重要前提。
OpenSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書簽發和管理中的配置文件機制等等。如果你有足夠的耐心,將會在深入使用OpenSSL的過程慢慢發現很多這樣的小功能,讓你不斷有新的驚喜。

㈡ 基於openssl庫實現AES加密(C語言)

AES加密演算法是一種廣泛應用的對稱加密技術,具有較高的加密效率和安全性。其核心包括分組密碼、位元組代換、行位移、列混合和輪密鑰加等操作。AES使用相同的密鑰進行加密與解密,演算法結構公開,計算量小,適用於多種場景。然而,多用戶通信時密鑰分發和管理較為困難。AES的分組長度為128位,推薦加密輪數為10輪,操作包括4個主要步驟。

在使用AES加密時,需要考慮演算法性能與應用范圍。AES-128演算法的破解難度極高,需要龐大硬體資源和長時間計算。AES演算法廣泛應用於信息安全領域,如WLAN、HTTPS協議和支付平台。

OpenSSL庫作為安全套接字層密碼庫,包含SSL協議、命令工具和密碼演算法庫。OpenSSL由libssl、libcrypto和命令工具三部分組成,提供SSL協議實現和安全密碼操作。

OpenSSL的AES加密API包括生成密鑰、加密和解密數據塊的函數。常用的API有AES_set_encrypt_key、AES_set_decrypt_key、AES_encrypt、AES_decrypt等。每個函數都針對特定操作,如AES_set_encrypt_key用於生成加密密鑰,AES_encrypt用於加密數據塊。

代碼實現以CBC模式為例,在Linux環境下編譯運行,展示了AES加密過程。該實現包含初始化密鑰、加密數據塊和輸出結果等步驟,符合AES加密演算法標准。

綜上所述,AES加密演算法結合OpenSSL庫提供了高效、安全的加密解決方案。通過對演算法原理、性能、應用和API的深入理解,可以實現復雜場景下的數據加密需求。代碼示例展示了實際應用中的加密過程,為開發者提供了參考。

㈢ openssl 如何使用

OpenSSL是一個廣泛使用的加密庫,為密碼學安全開發提供了強大且全面的功能,涵蓋主要的加密演算法、密鑰與證書管理,以及SSL/TLS協議支持。

在對稱加密演算法方面,OpenSSL支持包括AES、DES、Blowfish等在內的七種分組加密演算法,以及RC4流加密演算法。每種演算法都支持多種加密模式,如ECB、CBC、CFB、OFB等。值得注意的是,AES演算法在CFB和OFB模式下的分組長度為128位,而其他演算法為64位。此外,DES演算法還包括3DES演算法。

非對稱加密演算法方面,OpenSSL支持DH、RSA、DSA和橢圓曲線加密演算法。這些演算法適用於不同的場景,例如密鑰交換、數字簽名和數據加密。

信息摘要演算法方面,OpenSSL實現了MD2、MD5、MDC2、SHA1和RIPEMD五種演算法,其中SHA實際上包含了SHA1。此外,OpenSSL還支持DSS標准中的DSS和DSS1演算法。

密鑰和證書管理功能是OpenSSL的重要組成部分,它支持多種標准,包括X.509、PKCS#12、PKCS#7等。OpenSSL能夠生成各種公開密鑰對和對稱密鑰,並實現對私鑰的加密保護。此外,OpenSSL提供了證書的簽發、吊銷和驗證功能,其內置的CA應用程序能夠實現整個證書簽發流程。

OpenSSL還實現了SSLv2、SSLv3和TLSv1.0協議,支持大部分加密演算法。這些協議使用戶能夠深入了解SSL/TLS協議的實現細節,並提供了一種純凈的SSL協議版本。

OpenSSL的應用程序是其重要組成部分,包括密鑰生成、證書管理、數據加密與簽名、SSL測試等功能。這些應用程序不僅展示了OpenSSL的API使用方法,還成為一些開發者的首選工具。

Engine機制允許OpenSSL使用第三方加密庫或硬體加密設備,支持包括CryptoSwift、nCipher、Atalla等在內的多種加密設備。此外,OpenSSL還提供了BIO機制,以增強代碼的重用性和降低API的復雜度。

OpenSSL還提供了隨機數生成和管理功能,這對於確保密鑰安全至關重要。此外,OpenSSL還提供了從口令生成密鑰的API和證書簽發與管理中的配置文件機制等輔助功能。

閱讀全文

與openssl對稱加密演算法相關的資料

熱點內容
和平論pdf 瀏覽:353
被加密的文本怎麼破解 瀏覽:724
左遞歸消除編譯原理 瀏覽:623
php404自定義 瀏覽:254
0tc機器人編程 瀏覽:960
編程字體雅黑 瀏覽:72
濟南暖氣哪個app 瀏覽:962
國際服適合用什麼伺服器 瀏覽:735
購買軟軟的解壓玩具 瀏覽:749
改加密腳本名字 瀏覽:204
蘋果app怎麼點也沒反應 瀏覽:763
網盤文件解壓後的怎麼保存 瀏覽:841
如何在蘋果手機上玩安卓火影忍者 瀏覽:347
手機畫3d圖用哪個app 瀏覽:475
如何查看自己部落沖突伺服器地址 瀏覽:914
ecu編程晶元 瀏覽:551
編譯器gpk 瀏覽:31
程序員28原則 瀏覽:918
掌握命令的英文 瀏覽:687
榮耀屏幕錄像在哪個文件夾 瀏覽:584