阿嵩 唉唷

關於部落格
  • 190330

    累積人氣

  • 1

    今日人氣

    0

    訂閱人氣

OpenSSL與Diffie-Hellman


我習慣上是把編好的lib放進去$(BCB)ProjectsLib裡面
這樣子很多版本在進行維護時才不會一直浪費空間在擺這些Library
另外一個原因是很多時候手動加入的路徑都是絕對路徑
每當你換電腦的時候 就要把路徑重設 不然會看到一大堆"Invalid Paths"
當使用的lib越來越多時 火氣就會越來越大

在BCB裡面當然是要先把路徑都先設定好囉
所以要使用openssl的lib時 
  1. 就先開一個資料夾在$(BCB)ProjectsLib下面
  2. 接著建一個新的資料夾叫openssl 然後把inc32和out32複製進去
  3. 接著按Project->Options->Directorite/Conditionals
  4. 先點Include path:後面的[...]
  5. 在下面的框框打$(BCB)ProjectsLibopensslinc32
  6. 按add
  7. 按ok
  8. 按ok
    (我不確定要不要加入Library path 因為在等等的步驟做了之後 不加path也可以用)
  9. 接著按Project->Add to Project
  10. 選到$(BCB)ProjectsLibopensslout32
  11. 把檔案類型改成Library file(*.lib)
  12. 把全部的lib都加進去  應該會有libeay32.lib 和ssleay32.lib 兩個
  13. 按開啟就搞定了  

接著當然要include header file啦
找個你爽的地方加入
#include <openssl/dh.h>

然後就是下面這三個的使用了
DH_generate_parameters 

        產生DH裡面的p和g,也就是Modulus和Generator
       Generator文件中建議使用2或5

DH_generate_key
        產生DH中的pub_key和priv_key

DH_compute_key
        利用DH裡面的priv_key和另一個pub key來協調出一個session key

基本上DH的程式就是由這三個function組合完成

 

另外還有使用VC或visual studio的編譯方法

1、安装VC++ 6.0以上,我用2005可以成功。    
2、安裝activeperl
http://reg.softking.com.tw/freeware/index.asp?fid1=23&fid2=325&fid3=20578
3、下载 openssl並解壓縮。
http://www.openssl.org/source/
我是用openssl-0.9.8e 有新版本,但是我一直都用這個

安装步骤:用cmd
1、perl Configure VC-WIN32
2、msdo_ms
3、到VC安裝目錄下VC98bin目錄下執行 vcvars32.bat 設定環境變數。
如果是VS的話,可能在
C:Program FilesMicrosoft Visual Studio 8VCbin

4、跳到openssl目錄下,執行:

nmake -f msntdll.mak


會輸出inc32和out32dll兩個資料夾
意思等同於上面提到的inc32和out32
visual studio使用時也是要連結那兩個lib,加上

#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "ssleay32.lib")


另外在Openssl library裡面有個用的很多的工具就是Big Number了
#include <openssl/bn.h>
他是在整個加密函式庫裡面用來儲存大型數字用的,包括金鑰在內。bn.h裡面也包含了許多型態轉換的工具,向是在BN和HEX字串之間轉換,或是在BN與binary的轉換都是非常方便的。
例如:BN_bn2hex(dhkey11->p);

雖然在openssl的網頁裡面沒有完整的api可以看,不過在header檔裡面仍然可以很容易看出來各個function的作用。

 

相簿設定
標籤設定
相簿狀態