ABE仿真-JPBC的安裝與實驗


JPBC下載與安裝

JPBC是對PBC的java語言封裝版本,適合有Java基礎的人。做密碼學的人可能知道的比較多點,最近要仿真一篇屬性加密(ABE)論文,正好順手研究下怎么實現。

安裝&運行

首先從官網下載jar。注意有1.2.1和2.0.0的版本,其中2.0.0拋棄了1.2.1版本中的某些內容,例如從字符串初始化配對,還有官網的某些案例在2.0.0版本中也沒了,根據自己的功能選擇就行。

image

下載完解壓后,直接導入jar就行,我這里用的是Idea

image

接下來編寫一個雙線性映射測試類,順便解釋下用法

雙線性映射Demo
import it.unisa.dia.gas.jpbc.Element;
import it.unisa.dia.gas.jpbc.Pairing;
import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory;

public class Demo {

    public static void main(String[] args) {

        // 使用a.properties文件內容初始化配對參數
        Pairing pairing = PairingFactory.getPairing("a.properties");

        // 隨機選擇G1群上的一個元素e1
        Element e1 = pairing.getG1().newRandomElement();
        // e1設置為隨機值
        e1.setToRandom();
        // 隨機選擇G2群上的一個元素e1
        Element e2 = pairing.getG2().newRandomElement();
        // e2設置為隨機值
        e2.setToRandom();

        // 隨機選擇Zr群上的一個元素x
        Element x = pairing.getZr().newRandomElement();
        // x設置為隨機值
        x.setToRandom();

        // 復制一份e1
        Element e1_copy = e1.duplicate();
        // 計算e1^x
        e1_copy.mulZn(x);
        // 計算e(e1^x,e2)
        Element mp1 = pairing.pairing(e1_copy, e2);

        // 計算e(e1, e2)^x
        Element mp2 = pairing.pairing(e1, e2);
        mp2.mulZn(x);

        System.out.println(mp1.isEqual(mp2));
    }
}

上面的代碼實現了如下的一個雙線性映射:
image

代碼解釋

參照官網文檔,Pairing可以從橢圓曲線參數文件中生成一個G1xG2->GT的映射,關於a.properties文件可以在解壓后的params文件中找到。G1、G2、GT都是橢圓曲線群上的元素,Zr是整數域Zp上的元素。
其中a.properties是一個對稱的映射,即G1和G2是對等的,a1.properties是非對稱映射,G1和G2不等。


免責聲明!

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



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