#elliptic-curve #bn254 #hashing #hash-to-curve

bn254_hash2curve

BN254椭圆曲线的hash-to-curve

2个版本

0.1.1 2024年8月14日
0.1.0 2024年7月25日

847密码学 中排名

Download history 104/week @ 2024-07-20 32/week @ 2024-07-27 1/week @ 2024-08-03 114/week @ 2024-08-10

每月下载量251

MIT AND Apache-2.0

57KB
700

BN254 Hash-to-Curve

此仓库提供了BN254椭圆曲线的hash-to-curve实现,与gnark-crypto以及constantine库兼容。

构建和测试

  • 要使用gnark-crypto兼容性构建: cargo build --features "gnark_crypto_compatible"

  • 要使用constantine兼容性构建: cargo build --features "constantine_compatible"

  • 要运行gnark-crypto兼容的hash-to-curve测试: cargo test --features "gnark_crypto_compatible"

  • 要运行constantine兼容的hash-to-curve测试: cargo test --features "constantine_compatible"

用法

在项目的Cargo.toml中的依赖项下添加此库

bn254_hash2curve= {git= "https://github.com/hashcloak/bn254-hash-to-curve.git",特性= ["constantine_compatible"]}

OR

bn254_hash2curve={git= "https://github.com/hashcloak/bn254-hash-to-curve.git",特性= ["gnark_crypto_compatible"]}

然后按照以下方式使用

use bn254_hash2curve::hash2g1::HashToG1;
use bn254_hash2curve::hash2g2::HashToG2;

fn main() {

    let msg = b"abc";
    let dst_g1 = b"QUUX-V01-CS02-with-BN254G1_XMD:SHA-256_SVDW_RO_";
    let dst_g2 = b"QUUX-V01-CS02-with-BN254G2_XMD:SHA-256_SVDW_RO_";

    let hash_to_g1_result = HashToG1(msg, dst_g1);
    let hash_to_g2_result = HashToG2(msg, dst_g2);

    println!("hash_to_g1_result: {:?}", hash_to_g1_result);
    println!("hash_to_g2_result: {:?}", hash_to_g2_result);
}

概述

将哈希映射到曲线是密码协议中的关键操作,能够将任意数据安全地映射到椭圆曲线点。它利用高效的加密哈希技术将任意消息映射到椭圆曲线上的点。

特性

  • 实现了BN254椭圆曲线的hash-to-curve方法。
  • 与gnark-crypto和constantine库兼容。
  • 确保点映射到r-torsion子群。
  • 请参阅测试以获取使用示例。

依赖项

~7MB
~137K SLoC