在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何才能使用OpenSSL實現(xiàn)一個基本的安全連接的詳細概述

C語言專家集中營 ? 來源:未知 ? 作者:易水寒 ? 2018-05-27 10:26 ? 次閱讀

OpenSSL API 的文檔有些含糊不清。因為還沒有多少關(guān)于 OpenSSL 使用的教程,所以對初學者來說,在 應(yīng)用程序中使用它可能會有一些困難。那么怎樣才能使用 OpenSSL 實現(xiàn)一個基本的安全連接呢? 本教程將幫助您解決這個問題。

學習如何實現(xiàn) OpenSSL 的困難部分在于其文檔的不完全。不完全的 API 文檔通常會妨礙開發(fā)人員 使用該 API,而這通常意味著它注定要失敗。但 OpenSSL 仍然很活躍,而且正逐漸變得強大。這是為什么?

OpenSSL 是用于安全通信的最著名的開放庫。在 google 中搜索“SSL library”得到的返回結(jié)果中, 列表最上方就是 OpenSSL。它誕生于 1998 年,源自 Eric Young 和 Tim Hudson 開發(fā)的 SSLeay 庫。其他 SSL 工具包包括遵循 GNU General Public License 發(fā)行的 GNU TLS,以及 Mozilla Network Security Services(NSS)(請參閱本文后面的 參考資料 ,以獲得 其他信息)。

那么,是什么使得 OpenSSL 比 GNU TLS、Mozilla NSS 或其他所有的庫都優(yōu)越呢?許可是一方面因素 (請參閱 參考資料)。此外,GNS TLS(迄今為止)只支持 TLS v1.0 和 SSL v3.0 協(xié)議,僅此而已。

Mozilla NSS 的發(fā)行既遵循 Mozilla Public License 又遵循 GNU GPL,它允許開發(fā)人員進行選擇。 不過,Mozilla NSS 比 OpenSSL 大,并且需要其他外部庫來對庫進行編譯,而 OpenSSL 是完全 自包含的。與 OpenSSL 相同,大部分 NSS API 也沒有文檔資料。Mozilla NSS 獲得了 PKCS #11 支持,該支持可以用于諸如智能卡這樣的加密標志。OpenSSL 就不具備這一支持。

先決條件

要充分理解并利用本文,您應(yīng)該:

精通 C 編程

熟悉 Internet 通信和支持 Internet 的應(yīng)用程序的編寫。

并不絕對要求您熟悉 SSL ,因為稍后將給出對 SLL 的簡短說明;不過,如果您希望得到詳細論述 SSL 的文章的鏈接,請參閱參考資料部分。擁有密碼學方面的知識固然好,但這 并不是必需的。

什么是 SSL?

SSL 是一個縮寫,代表的是 Secure Sockets Layer。它是支持在 Internet 上進行安全通信的 標準,并且將數(shù)據(jù)密碼術(shù)集成到了協(xié)議之中。數(shù)據(jù)在離開您的計算機之前就已經(jīng)被加密,然后只有 到達它預(yù)定的目標后才被解密。證書和密碼學算法支持了這一切的運轉(zhuǎn),使用 OpenSSL,您將 有機會切身體會它們。

理論上,如果加密的數(shù)據(jù)在到達目標之前被截取或竊聽,那些數(shù)據(jù)是不可能被破解的。不過, 由于計算機的變化一年比一年快,而且密碼翻譯方法有了新的發(fā)展,因此,SSL 中使用的加密協(xié)議 被破解的可能性也在增大。

可以將 SSL 和安全連接用于 Internet 上任何類型的協(xié)議,不管是 HTTP、POP3,還是 FTP。還可以用 SSL 來保護 Telnet 會話。雖然可以用 SSL 保護任何連接,但是不必對每一類連接都使用 SSL。 如果連接傳輸敏感信息,則應(yīng)使用 SSL。

什么是 OpenSSL?

OpenSSL 不僅僅是 SSL。它可以實現(xiàn)消息摘要、文件的加密和解密、數(shù)字證書、數(shù)字簽名 和隨機數(shù)字。關(guān)于 OpenSSL 庫的內(nèi)容非常多,遠不是一篇文章可以容納的。

OpenSSL 不只是 API,它還是一個命令行工具。命令行工具可以完成與 API 同樣的工作, 而且更進一步,可以測試 SSL 服務(wù)器和客戶機。它還讓開發(fā)人員對 OpenSSL 的能力有一個 認識。要獲得關(guān)于如何使用 OpenSSL 命令行工具的資料,請參閱 參考資料部分。

您需要什么

首先需要的是最新版本的 OpenSSL。查閱參考資料部分,以確定從哪里可以獲得最新的可以自己編譯的源代碼, 或者最新版本的二進制文件(如果您不希望花費時間來編譯的話)。不過,為了安全起見, 我建議您下載最新的源代碼并自己編譯它。二進制版本通常是由第三方而不是由 OpenSSL 的開發(fā)人員來編譯和發(fā)行的。

一些 Linux 的發(fā)行版本附帶了 OpenSSL 的二進制版本,對于學習如何使用 OpenSSL 庫來說,這足夠了;不過, 如果您打算去做一些實際的事情,那么一定要得到最新的版本,并保持該版本一直是最新的。

對于以 RPM 形式安裝的 Linux 發(fā)行版本(Red Hat、Mandrake 等),建議您通過從發(fā)行版本制造商那里獲得 RPM 程序包來更新您的 OpenSSL 發(fā)行版本。出于安全方面的原因,建議您使用 最新版本的發(fā)行版本。如果您的發(fā)行版本不能使用最新版本的 OpenSSL,那么建議您只覆蓋庫文件,不要覆蓋 可執(zhí)行文件。OpenSSL 附帶的 FAQ 文檔中包含了有關(guān)這方面的細節(jié)。

還要注意的是,OpenSSL 并沒有在所有的平臺上都獲得官方支持。雖然制造商已經(jīng)盡力使其能夠跨平臺兼容, 但仍然存在 OpenSSL 不能用于您的計算機 和/或 操作系統(tǒng)的可能。請參閱 OpenSSL 的 Web 站點( 參考資料 中 的鏈接),以獲得關(guān)于哪些平臺可以得到支持的信息。

如果想使用 OpenSSL 來生成證書請求和數(shù)字證書,那么必須創(chuàng)建一個配置文件。在 OpenSSL 程序包 的 apps 文件夾中,有一個名為 openssl.cnf 的 可用模板文件。我不會對該文件進行討論,因為這不在本文要求范圍之內(nèi)。不過,該模板文件有一些非常好的注釋,而且如果 在 Internet 上搜索,您可以找到很多討論修改該文件的教程。

頭文件和初始化

本教程所使用的頭文件只有三個:ssl.h、bio.h 和 err.h。它們都位于 openssl 子目錄中,而且都是開發(fā)您的項目 所必需的。要初始化 OpenSSL 庫,只需要三個代碼行即可。清單 1 中列出了所有內(nèi)容。其他的頭文件 和/或 初始化函數(shù)可能 是其他一些功能所必需的。

清單 1. 必需的頭文件

如何才能使用OpenSSL實現(xiàn)一個基本的安全連接的詳細概述

建立非安全連接

不管連接是 安全的還是不安全的,OpenSSL 都使用了一個名為 BIO 的抽象庫來處理包括文件和套接字在內(nèi)的各種類型的通信。您還可以將 OpenSSL 設(shè)置成為一個過濾器,比如用于 UU 或 Base64 編碼的過濾器。

在這里對 BIO 庫進行全面說明有點麻煩,所以我將根據(jù)需要一點一點地介紹它。首先, 我將向您展示如何建立一個標準的套接字連接。相對于使用 BSD 套接字庫,該操作需要 的代碼行更少一些。

在建立連接(無論安全與否)之前,要創(chuàng)建一個指向 BIO 對象的指針。這類似于在標準 C 中 為文件流創(chuàng)建 FILE 指針。

清單 2. 指針

1BIO * bio;

打開連接

創(chuàng)建新的連接需要調(diào)用 BIO_new_connect 。您可以在同一個調(diào)用中同時 指定主機名和端口號。也可以將其拆分為兩個單獨的調(diào)用:一個是創(chuàng)建連接并設(shè)置主機名的 BIO_new_connect 調(diào)用,另一個是設(shè)置端口號的 BIO_set_conn_port (或者BIO_set_conn_int_port )調(diào)用。

不管怎樣,一旦 BIO 的主機名和端口號都已指定,該指針會嘗試打開連接。沒有什么可以影響它。如果創(chuàng)建 BIO 對象時遇到問題,指針將會是 NULL。為了確保連接成功,必須執(zhí)行 BIO_do_connect 調(diào)用。

清單 3. 創(chuàng)建并打開連接

在這里,第一行代碼使用指定的主機名和端口創(chuàng)建了一個新的 BIO 對象,并以所示風格對該對象進行 格式化。例如, 如果您要連接到 www.ibm.com 的 80 端口,那么該字符串將是 www.ibm.com:80 。調(diào)用 BIO_do_connect 檢查連接是否成功。如果出錯,則返回 0 或 -1。

與服務(wù)器進行通信

不管 BIO 對象是套接字還是文件,對其進行的讀和寫操作都是通過以下兩個函數(shù)來完成的: BIO_read 和 BIO_write 。 很簡單,對吧?精彩之處就在于它始終如此。

BIO_read 將嘗試從服務(wù)器讀取一定數(shù)目的字節(jié)。它返回讀取的字節(jié)數(shù)、 0 或者 -1。在受阻塞的連接中,該函數(shù)返回 0,表示連接已經(jīng)關(guān)閉,而 -1 則表示連接出現(xiàn)錯誤。在非阻塞連接的情況下,返回 0 表示沒有可以獲得的數(shù)據(jù),返回 -1 表示連接出錯。可以調(diào)用 BIO_should_retry 來確定是否可能重復(fù)出現(xiàn)該錯誤。

清單 4. 從連接讀取

BIO_write 會試著將字節(jié)寫入套接字。它將返回實際寫入的 字節(jié)數(shù)、0 或者 -1。同 BIO_read ,0 或 -1 不一定表示錯誤。BIO_should_retry 是找出問題的途徑。如果需要重試寫操作,它必須 使用和前一次完全相同的參數(shù)

清單 5. 寫入到連接

關(guān)閉連接

關(guān)閉連接也很簡單。您可以使用以下兩種方式之一來關(guān)閉連接: BIO_reset 或 BIO_free_all 。如果您還需要重新使用對象,那么請使用第一種方式。 如果您不再重新使用它,則可以使用第二種方式。

BIO_reset 關(guān)閉連接并重新設(shè)置 BIO 對象的內(nèi)部狀態(tài),以便可以重新使用連接。如果要在整個應(yīng)用程序中使用同一對象,比如使用一臺安全的聊天 客戶機,那么這樣做是有益的。該函數(shù)沒有返回值。

BIO_free_all 所做正如其所言:它釋放內(nèi)部結(jié)構(gòu)體,并釋放 所有相關(guān)聯(lián)的內(nèi)存,其中包括關(guān)閉相關(guān)聯(lián)的套接字。如果將 BIO 嵌入于一個類中,那么應(yīng)該在類的 析構(gòu)函數(shù)中使用這個調(diào)用。

清單 6. 關(guān)閉連接

建立安全連接

現(xiàn)在需要給出建立安全連接需要做哪些事情。惟一要改變的地方就是建立并進行連接。其他所有內(nèi)容都是相同的。

安全連接要求在連接建立后進行握手。在握手過程中,服務(wù)器向客戶機發(fā)送一個證書, 然后,客戶機根據(jù)一組可信任證書來核實該證書。它還將檢查證書,以確保它沒有過期。要 檢驗證書是可信任的,需要在連接建立之前提前加載一個可信任證書庫。

只有在服務(wù)器發(fā)出請求時,客戶機才會向服務(wù)器發(fā)送一個證書。該過程叫做客戶機認證。使用證書, 在客戶機和服務(wù)器之間傳遞密碼參數(shù),以建立安全連接。盡管握手是在建立連接之后才進行的,但是客戶機或服務(wù)器可以在任何時刻請求進行一次新的握手。

參考資料 部分中列出的 Netscasp 文章 和 RFC 2246 ,對握手以及建立安全連接的其他方面的知識進行了更詳盡的論述。

為安全連接進行設(shè)置

為安全連接進行設(shè)置要多幾行代碼。同時需要有另一個類型為 SSL_CTX 的指針。該結(jié)構(gòu)保存了一些 SSL 信息。您也可以利用它通過 BIO 庫建立 SSL 連接。可以通過使用 SSL 方法函數(shù)調(diào)用 SSL_CTX_new 來創(chuàng)建這個結(jié)構(gòu),該方法函數(shù)通常是SSLv23_client_method 。

還需要另一個 SSL 類型的指針來保持 SSL 連接結(jié)構(gòu)(這是短時間就能完成的一些連接所必需的)。以后還可以用該 SSL 指針來檢查連接信息或設(shè)置其他 SSL 參數(shù)。

清單 7. 設(shè)置 SSL 指針

1 SSL_CTX * ctx = SSL_CTX_new(SSLv23_client_method());

2 SSL * ssl;

加載可信任證書庫

在創(chuàng)建上下文結(jié)構(gòu)之后,必須加載一個可信任證書庫。這是成功驗證每個證書所必需的。如果 不能確認證書是可信任的,那么 OpenSSL 會將證書標記為無效(但連接仍可以繼續(xù))。

OpenSSL 附帶了一組可信任證書。它們位于源文件樹的 certs 目錄中。 不過,每個證書都是一個獨立的文件 —— 也就是說,需要單獨加載每一個證書。在 certs 目錄下,還有一個存放過期證書的子目錄。試圖加載這些證書將會出錯。

如果您愿意,可以分別加載每一個文件,但為了簡便起見,最新的 OpenSSL 發(fā)行版本的可信任證書 通常存放在源代碼檔案文件中,這些檔案文件位于名為“TrustStore.pem”的單個文件中。如果已經(jīng)有了一個可信任證書庫, 并打算將它用于特定的項目中,那么只需使用您的文件替換清單 8 中的“TrustStore.pem”(或者使用 單獨的函數(shù)調(diào)用將它們?nèi)考虞d)即可。

可以調(diào)用 SSL_CTX_load_verify_locations 來加載可信任證書庫文件。這里要用到 三個參數(shù):上下文指針、可信任庫文件的路徑 和文件名,以及證書所在目錄的路徑。必須指定可信任庫文件或證書的目錄。 如果指定成功,則返回 1,如果遇到問題,則返回 0。

清單 8. 加載信任庫

如果打算使用目錄存儲可信任庫,那么必須要以特定的方式命名文件。OpenSSL 文檔清楚 地說明了應(yīng)該如何去做,不過,OpenSSL 附帶了一個名為 c_rehash 的工具, 它可以將文件夾配置為可用于 SSL_CTX_load_verify_locations 的 路徑參數(shù)。

清單 9. 配置證書文件夾并使用它

為了指定所有需要的驗證證書,您可以根據(jù)需要命名任意數(shù)量的單獨文件或文件夾。您還可以同時指定 文件和文件夾。

創(chuàng)建連接

將指向 SSL 上下文的指針作為惟一參數(shù),使用 BIO_new_ssl_connect 創(chuàng)建 BIO 對象。還需要獲得指向 SSL 結(jié)構(gòu)的指針。在本文中,只將該指針用于 SSL_set_mode 函數(shù)。而這個函數(shù)是用來設(shè)置 SSL_MODE_AUTO_RETRY 標記的。使用這個選項進行設(shè)置,如果服務(wù)器突然希望進行 一次新的握手,那么 OpenSSL 可以在后臺處理它。如果沒有這個選項,當服務(wù)器希望進行一次新的握手時, 進行讀或?qū)懖僮鞫紝⒎祷匾粋€錯誤,同時還會在該過程中設(shè)置 retry 標記。

清單 10. 設(shè)置 BIO 對象

設(shè)置 SSL 上下文結(jié)構(gòu)之后,就可以創(chuàng)建連接了。主機名是使用 BIO_set_conn_hostname 函數(shù) 設(shè)置的。主機名和端口的指定格式與前面的相同。該函數(shù)還可以打開到主機的連接。為了確認已經(jīng)成功打開連接,必須 執(zhí)行對 BIO_do_connect 的調(diào)用。該調(diào)用還將執(zhí)行握手來建立安全連接。

清單 11. 打開安全連接

連接建立后,必須檢查證書,以確定它是否有效。實際上,OpenSSL 為我們完成了這項任務(wù)。如果證書有致命的 問題(例如,哈希值無效),那么將無法建立連接。但是,如果證書的問題并不是致命的(當它已經(jīng)過期 或者尚不合法時),那么仍可以繼續(xù)使用連接。

可以將 SSL 結(jié)構(gòu)作為惟一參數(shù),調(diào)用 SSL_get_verify_result 來查 明證書是否通過了 OpenSSL 的檢驗。如果證書通過了包括信任檢查在內(nèi)的 OpenSSL 的內(nèi)部檢查,則返回 X509_V_OK。如果有地方出了問題,則返回一個錯誤代碼,該代碼被記錄在命令行工具的 verify 選項下。

應(yīng)該注意的是,驗證失敗并不意味著連接不能使用。是否應(yīng)該使用連接取決于驗證結(jié)果和安全方面的考慮。例如, 失敗的信任驗證可能只是意味著沒有可信任的證書。連接仍然可用,只是需要從思想上提高安全意識。

清單 12. 檢查證書是否有效

這就是所需要的全部操作。通常,與服務(wù)器進行通信都要使用 BIO_read 和 BIO_write 。并且只需調(diào)用 BIO_free_all 或BIO_reset ,就可以關(guān)閉 連接,具體調(diào)用哪一個方法取決于是否重用 BIO。

必須在結(jié)束應(yīng)用程序之前的某個時刻釋放 SSL 上下文結(jié)構(gòu)。可以調(diào)用 SSL_CTX_free 來釋放該結(jié)構(gòu)。

清單 13. 清除 SSL 上下文

1 SSL_CTX_free(ctx);

錯誤檢測

顯然 OpenSSL 拋出了某種類型的錯誤。這意味著什么?首先,您需要得到錯誤代碼本身; ERR_get_error 可以完成這項任務(wù);然后,需要將錯誤代碼轉(zhuǎn)換為錯誤 字符串,它是一個指向由 SSL_load_error_strings 或 ERR_load_BIO_strings 加載到內(nèi)存中的永久字符串的指針。 可以在一個嵌套調(diào)用中完成這項操作。

表 1 略述了從錯誤棧檢索錯誤的方法。清單 24 展示了如何打印文本字符串中的最后一個 錯誤信息。

表 1. 從棧中檢索錯誤

清單 14. 打印出最后一個錯誤

1 printf(“Error: %s\n”, ERR_reason_error_string(ERR_get_error()));

您還可以讓庫給出預(yù)先格式化了的錯誤字符串。可以調(diào)用 ERR_error_string 來 得到該字符串。該函數(shù)將錯誤代碼和一個預(yù)分配的緩沖區(qū)作為參數(shù)。而這個緩沖區(qū)必須是 256 字節(jié)長。如果參數(shù) 為 NULL,則 OpenSSL 會將字符串寫入到一個長度為 256 字節(jié)的靜態(tài)緩沖區(qū)中,并返回指向該緩沖區(qū)的 指針。否則,它將返回您給出的指針。如果您選擇的是靜態(tài)緩沖區(qū)選項,那么在下一次調(diào)用 ERR_error_string 時,該緩沖區(qū)會被覆蓋。

清單 15. 獲得預(yù)先格式化的錯誤字符串

1 printf(“%s\n”, ERR_error_string(ERR_get_error(), NULL));

您還可以將整個錯誤隊列轉(zhuǎn)儲到文件或 BIO 中。可以通過 ERR_print_errors 或 ERR_print_errors_fp 來實現(xiàn)這項操作。隊列是以可讀格式被轉(zhuǎn)儲的。第一個函數(shù)將隊列發(fā)送到 BIO ,第二個函數(shù)將隊列發(fā)送到 FILE 。 字符串格式如下(引自 OpenSSL 文檔):

[pid]:error:[error code]:[library name]:[function name]:[reason string]:[file name]:[line]:[optional text message]

其中, [pid] 是進程 ID, [error code] 是一個 8 位十六進制代碼, [file name] 是 OpenSSL 庫中的源代碼文件, [line]是源文件中的行號。

清單 16. 轉(zhuǎn)儲錯誤隊列

1 ERR_print_errors_fp(FILE *);

2 ERR_print_errors(BIO *);

開始做吧

使用 OpenSSL 創(chuàng)建基本的連接并不困難,但是,當試著確定該如何去做時,文檔可能是一個小障礙。本文向您介紹了一些基本概念,但 OpenSSL 還有很多靈活之處有待發(fā)掘,而且 您還可能需要一些高級設(shè)置,以便項目能夠充分利用 SSL 的功能。

本文中有兩個樣例。一個樣例展示了到 http://www.verisign.com/ 的非安全連接,另一個則展示了到 http://www.verisign.com/ 的安全 SSL 連接。兩者都是連接到服務(wù)器并下載其主頁。它們沒有進行 任何安全檢查,而且?guī)熘械乃性O(shè)置都是默認值 —— 作為本文的一部分,應(yīng)該只將這些用于教學目的。

在任何支持的平臺上,源代碼的編譯都應(yīng)該是非常容易的,不過我建議您使用最新版本的 OpenSSL。在撰寫本文時,OpenSSL 的最新版本是 0.9.7d。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • OpenSSL
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    8706

原文標題:使用 OpenSSL API 進行安全編程

文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    openssl庫移植過程記錄

    openssl庫移植1 什么是openssl可以這么說,只要你的應(yīng)用程序和網(wǎng)絡(luò)安全有關(guān)系,不管是http還是mqtt,那么都需要依賴到openssl;首先
    發(fā)表于 11-04 06:43

    如何使用openssl制作開源C簽名工具?

    為了將簽名與多維數(shù)據(jù)集程序員分離,我使用 openssl 制作了開源 C 簽名工具。在各種構(gòu)建環(huán)境中應(yīng)該相當容易使用。
    發(fā)表于 12-06 07:52

    OpenSSL在電子商務(wù)安全中的應(yīng)用

    基于公共密鑰技術(shù)的SSL 協(xié)議已經(jīng)成為Internet 上廣泛應(yīng)用的安全通信標準,源碼開放的OpenSSL是對SSL 協(xié)議的完整實現(xiàn)。介紹了OpenSSL 在電子商務(wù)
    發(fā)表于 08-31 15:58 ?12次下載

    怎樣才能使本本達到最優(yōu)性能

    怎樣才能使本本達到最優(yōu)性能 問題:我是最近購本的菜鳥,請問怎樣才能使本本達到最優(yōu)的性能? 回
    發(fā)表于 01-25 14:39 ?526次閱讀

    如何才能使燈泡用得更久

    如何才能使燈泡用得更久   當投影機越來越貼近人民的生活水平,燈泡更換頻繁更是消費者的焦點問題,原裝燈泡的價格
    發(fā)表于 02-08 10:42 ?883次閱讀

    汽車安全專用標準產(chǎn)品詳細概述

    本文的主要內(nèi)容是對汽車安全專用標準產(chǎn)品的詳細概述
    發(fā)表于 04-16 16:00 ?4次下載
    汽車<b class='flag-5'>安全</b>專用標準產(chǎn)品<b class='flag-5'>詳細</b><b class='flag-5'>概述</b>

    CCS與JTAG仿真器連接的15問題匯總和解決方案詳細概述

    本文的主要內(nèi)容介紹的是CCS與JTAG仿真器連接的15問題匯總和解決方案詳細概述
    發(fā)表于 05-31 11:07 ?53次下載
    CCS與JTAG仿真器<b class='flag-5'>連接</b>的15<b class='flag-5'>個</b>問題匯總和解決方案<b class='flag-5'>詳細</b><b class='flag-5'>概述</b>

    組態(tài)王與數(shù)據(jù)庫連接實現(xiàn)方法詳細資料概述

    本文檔的主要內(nèi)容詳細介紹的是組態(tài)王與數(shù)據(jù)庫連接實現(xiàn)方法詳細資料概述
    發(fā)表于 10-31 08:00 ?21次下載
    組態(tài)王與數(shù)據(jù)庫<b class='flag-5'>連接</b>的<b class='flag-5'>實現(xiàn)</b>方法<b class='flag-5'>詳細</b>資料<b class='flag-5'>概述</b>

    怎么樣才能使用proteus進行仿真?

    本文檔的主要內(nèi)容詳細介紹的是怎么樣才能使用proteus進行仿真?
    發(fā)表于 09-05 17:27 ?3次下載
    怎么樣<b class='flag-5'>才能使</b>用proteus進行仿真?

    怎么樣才能使用FPGA實現(xiàn)數(shù)字系統(tǒng)

    本文檔的主要內(nèi)容詳細介紹的是怎么樣才能使用FPGA實現(xiàn)數(shù)字系統(tǒng)內(nèi)容包括了:FPGA簡介,為什么采用FPGA,開發(fā)平臺和設(shè)計工具,HDL(硬件描述語言),F(xiàn)PGA的設(shè)計原則,系統(tǒng)設(shè)計開發(fā)流程。
    發(fā)表于 08-11 15:29 ?9次下載
    怎么樣<b class='flag-5'>才能使</b>用FPGA<b class='flag-5'>實現(xiàn)</b>數(shù)字系統(tǒng)

    怎樣才能使VOC檢測儀更有效安全的運用

    面對環(huán)保設(shè)備市場的紛雜,氣體檢測儀的種類也品質(zhì)不,從環(huán)境檢測到電子廠,以及石化項目,許多客戶都因為對VOC檢測儀的缺點不了解造成損失,那么怎樣才能使VOC檢測儀更有效安全的運用呢,讓我們來了解
    發(fā)表于 06-13 17:36 ?2796次閱讀

    嵌入式Linux系統(tǒng)openssl庫移植

    openssl庫移植1 什么是openssl可以這么說,只要你的應(yīng)用程序和網(wǎng)絡(luò)安全有關(guān)系,不管是http還是mqtt,那么都需要依賴到openssl;首先
    發(fā)表于 11-01 16:31 ?8次下載
    嵌入式Linux系統(tǒng)<b class='flag-5'>openssl</b>庫移植

    openssl】從openssl的常用接口淺談【內(nèi)存泄漏】

    使用openssl有內(nèi)存泄露風險嗎?從openssl的常用接口調(diào)用淺談【內(nèi)存泄漏】的風險和規(guī)避。
    的頭像 發(fā)表于 08-31 11:24 ?3266次閱讀
    【<b class='flag-5'>openssl</b>】從<b class='flag-5'>openssl</b>的常用接口淺談【內(nèi)存泄漏】

    openssl】利用openssl命令行快速生成RSA私鑰

    openssl】如何利用openssl命令行快速生成RSA私鑰?
    的頭像 發(fā)表于 08-31 12:58 ?3387次閱讀
    【<b class='flag-5'>openssl</b>】利用<b class='flag-5'>openssl</b>命令行快速生成RSA私鑰

    OpenSSL安裝常見問題

    OpenSSL安裝常見問題
    的頭像 發(fā)表于 07-07 11:17 ?928次閱讀
    <b class='flag-5'>OpenSSL</b>安裝常見問題
    主站蜘蛛池模板: 国产免费美女| 中文在线资源链接天堂| 天天看片网站| 777成了人乱视频| 亚洲夜夜骑| 国产一级特黄在线播放| 精品无码三级在线观看视频| 四虎影院.com| 中文字幕一区二区三| 69女poren18女| 男女性生动态免费视频| 7086bt伙计 福利一区| 中文字幕一二三四区| 视频一区二区在线观看| 最近2018年中文字幕大全一| 亚洲啊v| 色吧视频| 四虎影视永久在线精品免费播放| 色窝网| 精品国产你懂的在线观看| 日本色免费| 免费大片黄在线观看日本| 国产人成高清视频观看| 午夜在线视频免费观看| 永久免费看| 免费大片av手机看片| 香蕉网影院在线观看免费| 午夜.dj高清在线观看免费8| 永久黄网站色视频免费观看| 四虎国产精品永久在线播放| 噜噜噜色网| 97av在线| 丁香天堂网| 高h细节肉爽文男男| 日韩一级生活片| 国产农村妇女毛片精品久久| 午夜免费视频| 啪啪小视频网站| 傲视影院午夜毛片| 中文字幕第7页| 欧美精品首页|