PBC庫的安裝與使用_Windows_Ubuntu


安裝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服務

by6TaV.png

安裝pbc+vc6.0(Windows)

Windows 10平台安裝PBC庫教程_fuliya005的博客-程序員寶寶 - 程序員寶寶 (cxybb.com)

Ubuntu編譯運行bls短簽名

PBC Library Manual 0.5.14 (stanford.edu)

注意參數

by0q8s.png

標准輸入,將不同配對類型的參數輸入給程序

byBOFe.png

byBfJJ.png

更多輸入參數的方法,參見《基於配對的密碼學》李發根 吳威峰 著 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);
    pairing_clear(pairing); //清除變量,釋放資源
    return 0;
}

bydOij.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM