Java 在JPBC中将元素从G1映射到Zn

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中的元素) 通过这样编码,您可以将任何元素映射

我在ORUTA项目中使用双线性映射,在实现它的过程中,我只停留在一个等式上。方程式为:

r*h(λ)
其中r是Zn中的随机元素(对于某些大素数n),λ是G1的成员,其中G1是与生成器g相乘的循环群。
这里h()由G->Zn给出。
如何将属于G1的λ值映射到Zn中的值


我使用java中的JPBC库来实现这个基于配对的应用程序

你需要三件事:

  • 一个映射函数(G1中的元素到
    字节[]
  • 实际加密散列(
    字节[]
    字节[]
    )和
  • 映射函数(
    byte[]
    到Zn中的元素)
通过这样编码,您可以将任何元素映射到
字节[]
(只要保持一致,在这里做什么都无关紧要):

您可以使用
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);