Java 在JPBC中将元素从G1映射到Zn
我在ORUTA项目中使用双线性映射,在实现它的过程中,我只停留在一个等式上。方程式为:Java 在JPBC中将元素从G1映射到Zn,java,cryptography,elliptic-curve,Java,Cryptography,Elliptic Curve,我在ORUTA项目中使用双线性映射,在实现它的过程中,我只停留在一个等式上。方程式为: r*h(λ) 其中r是Zn中的随机元素(对于某些大素数n),λ是G1的成员,其中G1是与生成器g相乘的循环群。 这里h()由G->Zn给出。 如何将属于G1的λ值映射到Zn中的值 我使用java中的JPBC库来实现这个基于配对的应用程序 你需要三件事: 一个映射函数(G1中的元素到字节[]) 实际加密散列(字节[]到字节[])和 映射函数(byte[]到Zn中的元素) 通过这样编码,您可以将任何元素映射
r*h(λ)
其中r是Zn中的随机元素(对于某些大素数n),λ是G1的成员,其中G1是与生成器g相乘的循环群。这里h()由G->Zn给出。
如何将属于G1的λ值映射到Zn中的值
我使用java中的JPBC库来实现这个基于配对的应用程序 你需要三件事:
- 一个映射函数(G1中的元素到
)字节[]
- 实际加密散列(
到字节[]
)和字节[]
- 映射函数(
到Zn中的元素)byte[]
字节[]
(只要保持一致,在这里做什么都无关紧要):
您可以使用java.security.MessageDigest
散列某些内容:
MessageDigest hasher = MessageDigest.getInstance("SHA-512");
byte[] znBytes = hasher.digest(g1Bytes);
您可以使用配对
(it.unisa.dia.gas.jpbc.pairing的实例)和适当的字段将一些字节映射到元素:
Element znElement = pairing.getZr().newElementFromHash(znBytes, 0, znBytes.length);
Element znElement = pairing.getZr().newElementFromHash(znBytes, 0, znBytes.length);