畢業設計需要在Linux操作系統下使用HElib庫做同態加密操作,之前看了HElib庫官方教程,但是官方教程沒有詳實的解釋操作流程,所以自己搜索整理了網上的資料,總結出了一些經驗和一些坑。
1. 下載Helib庫
我是從自己的碼雲倉庫下載的,地址是https://gitee.com/lingyao619/HElib.git,相對與GitHub,國內的代碼托管平台下載代碼速度很快。
# cd
# git clone https://gitee.com/lingyao619/HElib.git
2. 利用make命令編譯源文件
首先修改src目錄下的Makefile文件,修改的內容如下,
第一處是修改第19行,加入std子命令:
COPT = -g -O2 -std=c++11 -march=native
第二處是在第85行下面加入下面的命令:
install: cp -p fhe.a /usr/local/lib/libfhe.a chmod a+r /usr/local/lib/libfhe.a rm -rf /usr/local/include/fhe mkdir -m 755 /usr/local/include/fhe cp -p *.h /usr/local/include/fhe/ chmod -R a+r /usr/local/include/fhe
該代碼段的作用是,將下載的頭文件和函數庫放入到本地文件夾。
以下是兩處修改的截圖:
然后保存Makefile文件,在src文件夾下編譯源碼(我是用超級用戶身份運行的):
# make # make check # make install
注意,執行make check命令的時候可能會出現報錯,我的錯誤是:
但是這個錯誤並沒有影響后面的步驟。
執行完make install后,出現以下內容則正確:
3. 測試程序
HElib庫的example文件夾中給了兩個測試用的cpp文件,把這兩個文件拷貝到src文件夾下,並且修改頭文件格式(修改為同級目錄的形式),修改完之后的頭文件引用格式如下圖所示:
然后在src目錄下執行如下編譯命令:
# g++ -pthread -g -O2 -std=c++11 -march=native -DFHE_THREADS -DFHE_BOOT_THREADS -o BGV_general_example BGV_general_example.cpp fhe.a -lntl -lgmp -lm # g++ -pthread -g -O2 -std=c++11 -march=native -DFHE_THREADS -DFHE_BOOT_THREADS -o binaryArith_example binaryArith_example.cpp fhe.a -lntl -lgmp -lm
執行完成后,生成了編譯后產生的二進制文件,分別直接運行兩個文件:
# ./BGV_general_example
結果為:
# ./binaryArith_example
結果為:
運行成功。
4. 附參考資料
https://blog.csdn.net/weixin_43774577/article/details/103438782
Helib官方庫:https://github.com/homenc/HElib
在接下來的文章中,我會記錄我在學習的HElib庫過程中的相關知識和經驗。