各种签密算法链接
BF签密算法Java实现(JPBC)
BF加密
Ident.java
package com.xyl.yes;
public interface Ident {
void buildSystem();
void extractSecretKey();
void encrypt();
void decrypt();
}
BasicIdent2.java
package com.xyl.yes;
import java.lang.reflect.Proxy;
import it.unisa.dia.gas.jpbc.Element;
import it.unisa.dia.gas.jpbc.Field;
import it.unisa.dia.gas.jpbc.Pairing;
import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory;
public class BasicIdent2 implements Ident{
private Element s, r, P, Ppub, Su, Qu, V, T1, T2;
private Field G1, Zr;
private Pairing pairing;
public BasicIdent2() {
init();
}
/**
* 初始化
*/
private void init() {
PairingFactory.getInstance().setUsePBCWhenPossible(true);
pairing = PairingFactory.getPairing("a.properties");//
checkSymmetric(pairing);
//将变量r初始化为Zr中的元素
Zr = pairing.getZr();//
r = Zr.newElement();//阶
//将变量Ppub,Qu,Su,V初始化为G1中的元素,G1是加法群
G1 = pairing.getG1();//
Ppub = G1.newElement(); //主公钥
Qu = G1.newElement();
Su = G1.newElement();
V = G1.newElement();
//将变量T1,T2V初始化为GT中的元素,GT是乘法群
Field GT = pairing.getGT();//
T1 = GT.newElement();
T2 = GT.newElement();
}
/**
* 判断配对是否为对称配对,不对称则输出错误信息
*
* @param pairing
*/
private void checkSymmetric(Pairing pairing) {
if (!pairing.isSymmetric()) {
throw new RuntimeException("密钥不对称!");
}
}