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

标签 java cryptography elliptic-curve

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

r*h(λ)

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

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

最佳答案

为此,您需要三件事:

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

您可以将任何元素映射到 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);

关于java - 在 JPBC 中将元素从 G1 映射到 Zn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42671131/

相关文章:

c# - 使用 native C# 创建 ECC 私钥/公钥

cryptography - 如何将 ECDSA 曲线规范从 SEC2 形式转换为 Go 需要的形式?

java - JTable 设置具有动态大小的列宽和 JTextArea 作为单元格渲染器

javascript - 带有 Gradle 和 Webpack 的 Spring Boot

java - EJB - 何时使用远程和/或本地接口(interface)?

c# - 需要 C# Micro Framework 的 HMAC-SHA1 实现

java - Android,设置背景拉伸(stretch)或放大但永远不会正确

encryption - OpenSSL 认证加密

go - 生成具有特定公共(public)指数的 RSA key

java - 如何将自定义 EC 参数与 java.security.KeyPairGenerator 一起使用?