18个版本 (破坏性)

0.13.0 2022年12月6日
0.12.1 2022年10月28日
0.12.0 2022年5月4日
0.11.0 2021年9月2日
0.2.0 2017年6月27日

#18 in 算法

Download history 501457/week @ 2024-04-22 473219/week @ 2024-04-29 500562/week @ 2024-05-06 541717/week @ 2024-05-13 542058/week @ 2024-05-20 527575/week @ 2024-05-27 559748/week @ 2024-06-03 564196/week @ 2024-06-10 559735/week @ 2024-06-17 587231/week @ 2024-06-24 514951/week @ 2024-07-01 538221/week @ 2024-07-08 506448/week @ 2024-07-15 558242/week @ 2024-07-22 539273/week @ 2024-07-29 552671/week @ 2024-08-05

每月 2,179,053 次下载
1,580 个crate中使用 (140直接)

MIT/Apache

33KB
365

ff

ff 是一个纯Rust编写的有限域库,没有 unsafe{} 代码。

免责声明

  • 此库不提供恒定时间的保证。特质允许下游用户公开恒定时间的逻辑,但 #[derive(PrimeField)] 特质不会生成恒定时间的代码(即使对于返回恒定时间兼容值的特质方法)。

使用

ff crate 添加到您的 Cargo.toml

[dependencies]
ff = "0.13"

ff crate 包含 FieldPrimeField 特质。有关更多信息,请参阅 文档

#![derive(PrimeField)]

如果您需要一个素域的实现,此库还提供了一个过程宏,当提供模数时,将展开为素域的高效实现。 PrimeFieldGenerator 必须是 Fp 中 p-1 次序的元素,也是二次非剩余。

首先,启用 derive crate 功能

[dependencies]
ff = { version = "0.13", features = ["derive"] }

然后使用宏如下

#[macro_use]
extern crate ff;

#[derive(PrimeField)]
#[PrimeFieldModulus = "52435875175126190479447740508185965837690552500527637822603658699938581184513"]
#[PrimeFieldGenerator = "7"]
#[PrimeFieldReprEndianness = "little"]
struct Fp([u64; 4]);

就这样! Fp 现在实现了 FieldPrimeField

最低支持的Rust版本

需要 Rust 1.56 或更高版本。

最低支持的Rust版本将来可能会更改,但将通过小版本号提升来完成。

许可证

根据您的选择,许可如下

贡献

除非您明确声明,否则根据Apache-2.0许可定义的,您有意提交以包含在作品中的任何贡献,应如上双许可,没有任何额外条款或条件。

依赖关系

~67–610KB
~14K SLoC