PBC庫的安裝與使用_Windows_Ubuntu
阿新 • • 發佈:2022-03-08
安裝PBC或pypbc(ubuntu)
Ubuntu安裝PBC(Pairing-Based Cryptography) ——Python版本(pypbc) - KoalaZB - 部落格園 (cnblogs.com)
安裝pip3
(36條訊息) Ubuntu下pip3的安裝、升級、解除安裝_tiweeny的部落格-CSDN部落格_解除安裝pip3
最後只需要
sudo python3 setup.py install
不需要 “sudo pip3 install pypbc”這條命名
Windows Terminal+SSH連線Ubuntu虛擬機器,可以先用普通使用者登入,需要root,再切換root
保證虛擬機器和物理機在同一網段
(36條訊息) ubuntu開啟SSH服務遠端登入_jackghq的部落格-CSDN部落格_ubuntu開啟ssh服務
安裝pbc+vc6.0(Windows)
Windows 10平臺安裝PBC庫教程_fuliya005的部落格-程式設計師寶寶 - 程式設計師寶寶 (cxybb.com)
Ubuntu編譯執行bls短簽名
PBC Library Manual 0.5.14 (stanford.edu)
注意引數
標準輸入,將不同配對型別的引數輸入給程式
更多輸入引數的方法,參見《基於配對的密碼學》李髮根 吳威峰 著 P29
配對計算並檢測是否相等 參考:《基於配對的密碼學》李髮根 吳威峰 著 P21、22
#include "pbc.h" int main(void) { pairing_t pairing; //宣告一個配對型別的變數pairing element_t P,Q,a,b,c,x,y,temp1,temp2; //宣告一系列元素型別的變數 a_param_input(pairing); //將配對變數pairing初始化為型別A的配對 element_init_G1(P,pairing); //將變數P初始化為群G1中的元素 element_init_G1(temp1,pairing); //將變數temp1初始化為群G1中的元素 element_init_G2(Q,pairing); //將變數Q初始化為群G2中的元素 element_init_G2(temp2,pairing); //將變數temp2初始化為群G2中的元素 element_init_GT(x,pairing); //將變數x初始化為群GT中的元素 element_init_GT(y,pairing); //將變數y初始化為群GT中的元素 element_init_Zr(a,pairing); element_init_Zr(b,pairing); element_init_Zr(c,pairing); //將變數a,b,c初始化為環Zr中的元素,環Zr是配對型別的變數pairing中的代數結構,r是群G1,G2,GT的階 element_random(P); //隨機選取群G1中的一個元素並賦給變數P element_random(Q); //隨機選取群G2中的一個元素並賦給變數Q element_random(a); //隨機選取環Zr中的一個元素並賦給變數a element_random(b); //隨機選取環Zr中的一個元素並賦給變數b element_mul(c,b,a); //設定c同餘a*b(modr) pairing_apply(x,P,Q,pairing); //配對計算x=e(P,Q),函式引數順序不能調換 element_pow_zn(x,x,c); //x=x^c=e(P,Q)^c=e(P,Q)^(ab) element_pow_zn(temp1,P,a); //temp1=aP element_pow_zn(temp2,Q,b); //temp2=bQ pairing_apply(y,temp1,temp2,pairing); //配對計算y=e(temp1,temp2)=e(aP,bQ),函式引數順序不能調換 if(!element_cmp(x,y)) { printf("x is equal to y\n"); } else { printf("x is not equal to y\n"); } element_clear(P); element_clear(Q); element_clear(a); element_clear(b); element_clear(c); element_clear(x); element_clear(y); element_clear(temp1); element_clear(temp2); element_clear(pairing); //清除變數,釋放資源 return 0; }