2个版本
新 0.1.1 | 2024年8月14日 |
---|---|
0.1.0 | 2024年7月25日 |
847 在 密码学 中排名
每月下载量251
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