格密碼開源庫PALISADE的使用

2021-10-10 11:01:51 字數 2754 閱讀 3518

palisade是紐澤西理工學院的乙個格密碼開源專案,也是現在少有的成熟穩定的格密碼開源庫,這篇文章主要介紹該庫的使用與構建。

事實上該庫的readme文件介紹的十分詳細,但是如果不熟悉c++開源專案的構建和make命令,可能自己使用的時候會非常折磨,因為網上關於這方面的知識少之又少。

專案位址

專案主頁

文件中介紹了palisade在ubuntu、centos、windows中的構建。很不幸,在三個系統中我都構建了一遍,三個系統都構建成功,但開發過程並不順利,不然誰又想要被折磨三遍呢…

主要構建過程根據專案文件來做大體相似;

首先clone該專案

git clone
git submodule sync --recursive

git submodule update --init --recursive

這一步可能會出現問題,首先是centos可能會無法識別這個命令,即便在ubuntu或者windows中識別成功,也會顯示

翻譯過來就是===>

子依賴專案註冊成功

開始clone.....

所以乾脆開四個終端,把四個依賴專案乙個乙個git clone 下來;

構建專案

@echo "palisade has converted to cmake"

@echo "try this:"

@echo mkdir build

@echo cd build

@echo cmake ..

@echo make

@echo make install \(to install in 'installed'\)

所以按照他要求命令執行就行了;

mkdir build

cd build

cmake ..

然後繼續操作

make
這一步到33%左右大概率會報錯,會提示你test/main_testall.cpp中的color_greencolor_red無法識別,我不認識這兩個是什麼關鍵字,簡單看了一下**,出現這兩個關鍵字的幾行**都是列印內容的,沒有什麼用處,所以我把**裡的這幾行都注釋掉再make就可以正常構建了;

這一步時間有點久。

make install
正式構建專案生成庫檔案

linux路徑就是預設的/usr/local/include/usr/local/lib,windows的在c:\program files (x86)\palisade裡,windows的路徑我也找了好久,而且這路徑帶空格帶全形括號,之後使用的時候非常非常難受…

至此,專案構建完畢

構建測試用例

make testall

bin/examples/pke/******-integers

印象中沒什麼坑,這兩步是把幾個庫的examples的cpp檔案構建了一遍,bin/examples裡全是可執行程式,跑一下結果正常就行了;

windows我雖然打包編譯測試都成功了,但是在自己專案中執行是失敗的,所以最終我放棄了windows系統.

後面的之後填坑…

lib更新過要sudo ldconfig使其生效

g++ -o main ******-integers.cpp -l. -lpalisadepke -lpalisadesignature -lpalisadecore -lpalisadebinfhe -lpalisadeabe

echo $ld_library_path

vim ~/.bashrc

export ld_library_path=$ld_library_path/usr/local/lib

生成庫檔案並使用

g++ palisadeuse.cpp -fpic -shared -o libpause.so

複製libpause過去

編寫標頭檔案

#ifndef pause_h_

#define pause_h_

int test();

#endif /* max_h_ */

呼叫

g++ -o mainxy usedemo.cpp -l. -lpause -lpalisadepke -lpalisadesignature -lpalisadecore -lpalisadebinfhe -lpalisadeabe

然後就有mainxy了

琢磨了一下,可以換一種方式實現

直接用python調so太麻煩了,可以直接生成可執行檔案,通過傳參和輸出的值實現效果;

第二種方法可以用:

關於這個subprocess這個庫有很多函式可以用:

subprocess.check_output()

親測可以傳參並拿到out值

vv.exe可以測試

常用的開源庫

json解析 1 gson 2 jackson 3 fastjson 4 logansquare 資料庫操作 1 activeandroid 2 ormlite 3 greendao 4 realm 網路通訊 快取和顯示 1 bitmapfun 2 picasso 3 glide 4 fresco ...

VLFeat開源庫的配置

由於目前學習的需要,正在配置minsu cho的learning graphs to match的 雖然readme檔案裡面已經講得很清楚也很簡單,但是配了之後一直跑不通,也是剛剛才調通,歸根結底還是由於vlfeat開源庫沒有配好,故只好把自己配置的經歷寫下來以備後用。假如資料夾的目錄為 deskt...

常用的開源類庫

下拉重新整理 mjrefresh 非同步載入 sdwebimage coredata magicalrecord 網路請求 afnetworking autolayout masonry progresshud mbprogresshud 鍵盤管理 iqkeyboardmanager tablevi...