2017-03-08 216 views
2

我正在使用项目ORUTA中的双线性映射,并且在实现它时卡住了一个等式。的公式为:在JPBC中将元素从G1映射到Zn

r*h(λ) 

其中r是选自Zn随机元素(对于一些大素n)和λ是G1的构件,其中G1是与发电机克乘法环状基团。
这里h()由G→Zn给出。
如何将属于G1的λ的值映射到Zn中的值。

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

回答

3

需要为三两件事:

  • 的映射函数(G中到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); 

可以一些字节映射到使用pairing(的it.unisa.dia.gas.jpbc.Pairing实例)的元件和相应的字段:

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