Linux 下編譯並使用 Miracl 庫
MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套由Shamus Software Ltd.所開發的一套關於大數運算函式庫,用來設計與大數運算相關的密碼學之應用,包含了RSA 公開密碼學、Diffie-Hellman金鑰交換(Key Exchange)、AES、DSA數字簽名,還包含較新的橢圓曲線密碼學(Elliptic Curve Cryptography)等等。運算速度快,並提供原始碼。國外著名密碼學函式庫還有:GMP、NTL、Crypto++、LibTomCrypt(LibTomMath)、OpenSSL等。
(1)這是我找到的一些關於這個庫的文件:
連結:ofollow,noindex">https://pan.baidu.com/s/1WDXIeI3ajAclHQB42Kzbxg 提取碼:5sjp
(2)這是這個庫的 github 專案
https://github.com/miracl/MIRACL
0X02 編譯
由於 ubuntu 在編譯方面相對於 centos 方便一些,於是我這裡以 ubuntu 進行說明
1.下載並解壓 GitHub/">GitHub 的 Miracl zip
下載下 MIRACL-master.zip 檔案以後,我們需要新建一個 miracl 資料夾
mkdir miracl
將 zip 檔案拷貝到 miracl 中以後,使用下面的命令進行解壓
unzip -j -aa -L MIRACL*.zip
2.開始編譯
在 miracl 目錄下執行 linux64 這個指令碼
bash linux64
等待一會就編譯結束了,執行下面這條命令測試一下是否編譯成功,如果正常執行就是編譯成功了
./pk-demo
3.將 *.h 拷貝
Linux 要想引用標頭檔案我們需要將我們的自己的庫的 .h 檔案都放到 linux 的 /usr/include 中,為了區分各種的庫,我在 /usr/include 建立一個 miracl 資料夾
cp ./miracl/*.h /usr/include/miracl
4.將 miracl.a 檔案移動並重命名
我們需要在連結的時候用到這個庫,我們就要把這個靜態連結庫檔案放在 /usr/lib 下,並命名為 libxxxx.a
cp ./miracl/miracl.a /usr/lib/libmiracl.a
5.修改標頭檔案
因為我剛剛在 include 目錄下建立了一個 miracl 資料夾,於是我們引用標頭檔案的時候也要帶上
#include<miracl/miracl.h> #include<miracl/mirdef.h>
6.使用 gcc 編譯 c 檔案
gcc sm3.c -o sm3 -lmiracl
0X03 補充
如果有人對這個 gcc 編譯,包括 靜態動態連結不是很清楚的話,可以看一下這本書的 3.3.1 節,我覺得寫得非常好,也是別人推薦給我的
連結:https://pan.baidu.com/s/1PWLxrT8VtmD5MKSCU-3WhQ 提取碼:bq6v