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_green
和color_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...