openssl編程-基礎知識-OpenSSL簡介

參考鏈接

  • 在ubuntu環境下執行openssl編譯和安裝_MY CUP OF TEA的博客-CSDN博客_openssl ubuntu
  • OpenSSL編程 趙春平

OpenSSL

簡介

  • 它提供的主要功能有:SSL協議實現(包括SSLv2、SSLv3和TLSv1)、大量軟算法(對稱/非對稱/摘要)、大數運算、非對稱算法密鑰生成、ASN.1編解碼庫、證書請求(PKCS10)編解碼、數字證書編解碼、CRL編解碼、OCSP協議、數字證書驗證、PKCS7標準實現和PKCS12個人數字證書格式實現等功能

安裝

  • 運行./config --prefix=/usr/local/openssl? 即生成動態庫,且將其安裝在?/usr/local/openssl? 文件夾下
  • 更多選項用./config --help 來查看
  • 比如:no-mdc2、no-cast no-rc2、no-rc5、no-ripemd、no-rc4 no-des 、no-md2、no-md4、no-idea 、 no-aes、no-bf、no-err、no-dsa、no-dh、no-ec、no-hw、no-asm、no-krb5、no-dso 、no-threads 、 no-zlib、-DOPENSSL_NO_HASH_COMP、-DOPENSSL_NO_ERR、-DOPENSSL_NO_HW 、 -DOPENSSL_NO_OCSP、-DOPENSSL_NO_SHA256 和-DOPENSSL_NO_SHA512 等,去掉不必要的內容可以減少生成庫的大小。
  • 若要生成 debug 版本的庫和可執行程序加-g 或者 -g3(openssl 中有很多宏,需要調試學習最好加上-g3)。
  • make
  • make test 開始測試,此步驟可選
  • make install
  • openssl 會被安裝到/usr/local/openssl 目錄,包括頭文件目錄 include、可執行文件目錄 bin、man 在線幫助、庫目錄 lib 以及配置文件目錄(ssl)

?源代碼

  • openssl 源代碼主要由ssl 庫、工具源碼、范例源碼以及測試源碼組成。

crypto源代碼

  • 包括如下內容:
  • 1) asn.1 DER 編碼解碼(crypto/asn1 目錄),它包含了基本 asn1 對象的編解碼以及數字證書請求、數字證書、CRL撤銷列表以及PKCS8等最基本的編解碼函數。這些函數主要通過宏來實現。
  • 2)抽象 IO(BIO,crypto/bio 目錄),本目錄下的函數對各種輸入輸出進行抽象,包括 文件、內存、標準輸入輸出、socket和 SSL 協議等。
  • 3)大數運算(crypto/bn 目錄),本目錄下的文件實現了各種大數運算。這些大數運 算主要用于非對稱算法中密鑰生成以及各種加解密操作。另外還為用戶提供了大量輔助函數,比如內存與大數之間的相互轉換。
  • 4)字符緩存操作(crypto/buffer 目錄)。
  • 5)配置文件讀取(crypto/conf 目錄),openssl 主要的配置文件為 openssl.cnf。本目錄下的函數實現了對這種格式配置文件的讀取操作。
  • 6) DSO(動態共享對象,crypto/dso 目錄),本目錄下的文件主要抽象了各種平臺的動態庫加載函數,為用戶提供統一接口。
  • 7) 硬件引擎(crypto/engine 目錄),硬件引擎接口。用戶如果要寫自己的硬件引擎, 必須實現它所規定的接口。
  • 8) 錯誤處理(crypto/err 目錄),當程序出現錯誤時,openssl 能以堆棧的形式顯示各 個錯誤。本目錄下只有基本的錯誤處理接口,具體的的錯誤信息由各個模塊提供。各個模塊專門用于錯誤處理的文件一般為*_err..c 文件。
  • 9) 對稱算法、非對稱算法及摘要算法封裝(crypto/evp 目錄)。
  • 10) HMAC(crypto/hmac 目錄),實現了基于對稱算法的 MAC。
  • 11) hash 表(crypto/lhash 目錄),實現了散列表數據結構。openssl 中很多數據結構都是以散列表來存放的。比如配置信息、ssl session 和 asn.1 對象信息等。
  • 12) 數字證書在線認證(crypto/ocsp 目錄),實現了 ocsp 協議的編解碼以及證書 有效性計算等功能。
  • 13) PEM 文件格式處理(crypto/pem),用于生成和讀取各種 PEM 格式文件, 包括各種密鑰、數字證書請求、數字證書、PKCS7消息和PKCS8消息等。
  • 14) pkcs7 消息語法(crypto/pkcs7 目錄),主要實現了構造和解析 PKCS7 消息;
  • 15) pkcs12 個人證書格式(crypto/pckcs12 目錄),主要實現了 pkcs12 證書的構造和解析。
  • 16) 隊列(crypto/pqueue 目錄),實現了隊列數據結構,主要用于 DTLS。? 未找到
  • 17) 隨機數(crypto/rand 目錄),實現了偽隨機數生成,支持用戶自定義隨機數 生成。
  • 18) 堆棧(crypto/stack 目錄),實現了堆棧數據結構。?
  • 19) 線程支持(crypto/threads),openssl 支持多線程,但是用戶必須實現相關接口。未找到
  • 20) 文本數據庫(crypto/txt_db 目錄)。
  • 21) x509 數字證書(crypto/x509 目錄和 crypto/x509v3),包括數字證書申請、數字證書和CRL的構造、解析和簽名驗證等功能了;
  • 22) 對稱算法(crypto/aes、crypto/bf、crypto/cast、ccrypto/omp (未找到)和 crypto/des 等目錄)。
  • 23) 非對稱算法(crypto/dh、crypto/dsa、crypto/ec 和 crypto/ecdh(未找到))。
  • 24) 摘要算法(crypto/md2、crypto/md4、crypto/md5 和 crypto/sha)以及密鑰交 換/認證算法(crypto/dh 和 crypto/krb5??(未找到))。?

SSL 源代碼?

  • ssl 庫所有源代碼在 ssl 目錄下,包括了 sslv2、sslv3、tlsv1 和 DTLS 的源代碼。各個版本基本上都有客戶端源碼(*_clnt.c)、服務源碼(*_srvr.c)、通用源碼(*_both.c)、底層包源碼(*_pkt.c)、方法源碼(*_meth.c)以及協議相關的各種密鑰計算源碼(*_enc.c)等,都很有規律。? 存疑,有問題

工具源碼 apps

  • 工具源碼主要在 crypto/apps 目錄下,默認編譯時只編譯成 openssl(windows 下為openssl.exe)可執行文件。該命令包含了各種命令工具。此目錄下的各個源碼可以單獨進行編譯

范例源碼?

  • 范例源碼在 demo 目錄下

engines

  • 另外 engines 目錄給出了 openssl 支持的幾種硬件的 engines 源碼,也可以作為 engine 編寫參考。

?test測試源碼

  • 測試源碼主要在 test 目錄下。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445881.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445881.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445881.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux修改文件句柄數生效_linux系統層面調優和常見的面試題

linux系統層面調優和常見的面試題?mp.weixin.qq.com無論對Spark集群,還是Hadoop集群等大數據相關的集群進行調優,對linux系統層面的調優都是必不可少的,這里主要介紹3種常用的調優:1.linux文件句柄linux在整個系統層面和單個進程…

openssl編程-基礎知識-OpenSSL堆棧

堆棧介紹 堆棧是一種先進后出的數據結構openssl 大量采用堆棧來存放數據。它實現了一 個通用的堆棧,可以方便的存儲任意數據它實現了許多基本的堆棧操作,主要有:堆棧拷貝(sk_dup)、構建新堆棧(sk_new_null,sk_new&…

小米用戶畫像_企鵝智庫:高學歷用蘋果中老年用華為 男性用小米女性用OV

不同手機品牌都有著自己不同的定位人群,在國內市場目前幾大非常有名的手機品牌分別被三星、蘋果、華為、小米、OV占據,而這些手機品牌的主要購買人群到底是什么樣的呢?企鵝智庫近日發布了一份手機消費者的調研報告,并且根據消費者…

國密gmtls協議-雙證書體系的服務端和客戶端通信代碼

內容介紹 國密的雙證書體系,將證書按照使用目的的不同劃分為加密證書和簽名證書兩種,也就是兩對公私鑰,二者本質一致,均為SM2密鑰對,區別僅體現在用法國密CA體系中,加密密鑰對由CA產生,簽名密鑰…

jwt 私鑰_什么是 JSON Web Token(JWT)

有關本文檔的快速鏈接,請參考頁面提示。什么是 JSON Web Token(JWT)?JSON Web Token (JWT) 作為一個開放的標準 (RFC 7519) 定義了一種簡潔自包含的方法用于通信雙方之間以 JSON 對象的形式安全的傳遞信息。因為有數字簽名,所以這些通信的信息能夠被校驗…

server和client之間進行Socket通信,進行數據切片

參考鏈接 send函數和recv函數 – gudakos memo 注意事項 代碼很low&#xff0c;主要看封裝的Send函數所體現的切片思想即可 server代碼 //udp服務端 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include …

天線下傾角示意圖_常用天線和無源器件技術參數匯總

原標題&#xff1a;常用天線和無源器件技術參數匯總一、天線原理天線的定義&#xff1a; 能夠有效地向空間某特定方向輻射電磁波或能夠有效的接收空間某特定方向來的電磁波的裝置。天線的功能&#xff1a; 能量轉換-導行波和自由空間波的轉換; 定向輻射(接收)-具有一定的方向性…

制作作品圖片_不懂人文后期制作流程?來,大師手把手教你

制作前1、處理一張照片思路決定步驟 想要了解學習的老師可以私聊小編fzhdyx222制作后2、2020年最新Camera Raw局部影調和色調的控制想要了解學習的老師可以私聊小編fzhdyx222制作前3、2020年最新Camera Raw基礎工具細節性運用想要了解學習的老師可以私聊小編fzhdyx222制作后4、…

xlsx文件打開亂碼_Excel 2016 雙擊無法打開xlsx文件怎么辦?

最近我重裝了系統(Win10Office2016)&#xff0c;然后發現了一個奇怪的bug&#xff1a;雙擊xlsx文件&#xff0c;只能打開Excel窗口&#xff0c;但是打不開這個文件&#xff0c;有時候再次雙擊就能打開了&#xff0c;但有時再次雙擊也不管用&#xff0c;需要在Excel的菜單中點“…

gmssl使用雙證書雙向認證的gmtl協議報錯crypto/sm2/sm2_sign.c 510: sm2_do_verifySSL3 alert write:fatal:decrypt error

報錯內容 crypto/sm2/sm2_sign.c 510: sm2_do_verify SSL3 alert write:fatal:decrypt error SSL_accept:error in error ERROR 140655864152064:error:1417B07B:SSL routines:tls_process_cert_verify:bad signature:ssl/statem/statem_srvr.c:2941: 相關內容 版本&#xf…

糾偏的意思_承壓能力和糾偏能力,決定成長的高度

承壓能力&#xff0c;包含抗壓能力、抵御能力&#xff0c;擔當能力&#xff0c;分解能力&#xff0c;消化能力&#xff0c;釋放能力&#xff0c;等一系列的精神要素&#xff0c;是一個人生存生活工作中一項重要的素質。有的人&#xff0c;承壓能力很強&#xff0c;無論經受什么…

《Java8實戰》筆記(15):面向對象和函數式編程的混合-Java 8和Scala的比較

面向對象和函數式編程的混合&#xff1a;Java 8和Scala的比較 Scala是一種混合了面向對象和函數式編程的語言。它常常被看作Java的一種替代語言&#xff0c;程序員們希望在運行于JVM上的靜態類型語言中使用函數式特性&#xff0c;同時又期望保持Java體驗的一致性。和Java比較起…

函數指針作為形參進行調用

代碼 兩個代碼均位于namespace作用域之內addOne將傳遞進來的形參進行加一&#xff0c;然后返回performance_test函數主要是想簡化函數調用&#xff0c;兩個形參&#xff0c;第一個表示循環的次數&#xff0c;第二個是帶參數的函數指針&#xff0c;函數內部初始化start和end兩個…

python中fetchall_Python連接MySQL并使用fetchall()方法過濾特殊字符

來一個簡單的例子&#xff0c;看Python如何操作數據庫&#xff0c;相比Java的JDBC來說&#xff0c;確實非常簡單&#xff0c;省去了很多復雜的重復工作&#xff0c;只關心數據的獲取與操作。準備工作需要有相應的環境和模塊&#xff1a;Ubuntu 14.04 64bitPython 2.7.6MySQLdb注…

《Java8實戰》筆記(16):結論以及Java的未來

結論以及Java的未來 回顧Java8的語言特性 行為參數化&#xff08;Lambda以及方法引用&#xff09; 流 CompletableFuture Optional 默認方法 Java的未來 集合 類型系統的改進 聲明位置變量 更多的類型推斷 模式匹配 更加豐富的泛型形式 具化泛型 泛型中特別為函…

解決吉大正源(身份認證網關|USBKey)和gmssl(server|client)使用gmtl協議交叉互通報錯tlsv1 alert decrypt error

報錯內容 SSL_connect:error in SSLv3/TLS write finished140057291788288:error:1409441B:SSL routines:ssl3_read_bytes:tlsv1 alert decrypt error:ssl/record/rec_layer_s3.c:1385:SSL alert number 51 報錯原因 gmssl庫生成 certificate verify 消息時&#xff0c;對自客…

12無法使用otg_12個冷知識:或許只能看看而無法使用,但卻真實存在著

12個或許只能看看而無法使用&#xff0c;但卻真實存在著。臉紅一所有已知動物中&#xff0c;唯一可以臉紅的是人類。二有些地區將雨水歸類為公共財物&#xff0c;作為公共財物是不允許收集的&#xff0c;違反者將面臨處罰。三世界上汽車研發成本最高的一款車是福特蒙迪歐&#…

《Java8實戰》筆記匯總

《Java8實戰》筆記&#xff08;01&#xff09;&#xff1a;為什么要關心Java8 《Java8實戰》筆記&#xff08;02&#xff09;&#xff1a;通過行為參數傳遞代碼 《Java8實戰》筆記&#xff08;03&#xff09;&#xff1a;Lambda表達式 《Java8實戰》筆記&#xff08;04&…

三目運算符_C語言知識點:運算符的優先級和結合性

運算符是一種告訴編譯器執行特定的數學或邏輯操作的符號。C語言內置了豐富的運算符&#xff0c;大體可分為10類&#xff1a;算術運算符、關系運算符、邏輯運算符、位操作運算符、賦值運算符、條件運算符、逗號運算符、指針運算符、求字節數運算符和特殊運算符。根據運算符可操作…

可以直接進行運算么_WORD辦公技巧:如何直接在WORD中進行加法、乘法運算?

排版目標下圖文檔中有一張2020年&#xff11;&#xff0d;&#xff13;月口罩購買情況統計表&#xff0c;數據量并不大&#xff0c;我們想不動用excel表格進行統計&#xff0c;直接利用WORD自帶的函數公式計算出表格內空白單元格的數值。其中&#xff0c;金額&#xff1d;單價&…