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

时间:2017-03-08 12:15:33

标签: java cryptography elliptic-curve

我在项目ORUTA中使用双线性映射,并且在实现它时我坚持使用一个等式。等式是:

r*h(λ)

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

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

1 个答案:

答案 0 :(得分:3)

你需要三件事:

  • 映射函数(G 1 中的元素到byte[]),
  • 实际加密哈希(byte[]byte[])和
  • 映射函数(byte[]到Z n 中的元素。)

您可以通过对此进行编码将任何元素映射到byte[](只要您保持一致,这与您在此处执行的操作无关):

byte[] g1Bytes = g1Element.toCanonicalRepresentation();

您可以使用java.security.MessageDigest哈希值:

MessageDigest hasher = MessageDigest.getInstance("SHA-512");
byte[] znBytes = hasher.digest(g1Bytes);

您可以使用pairingit.unisa.dia.gas.jpbc.Pairing的实例)和相应的字段将一些字节映射到元素:

Element znElement = pairing.getZr().newElementFromHash(znBytes, 0, znBytes.length);