#有限域 #素域 #纯 #接口 #ff #原始 #不安全

ff_ce

构建与有限域交互的库

17个不稳定版本

0.14.3 2022年11月30日
0.14.1 2022年6月23日
0.13.1 2021年5月14日
0.12.0 2020年8月10日
0.6.0 2019年3月31日

#469Rust模式

Download history 10059/week @ 2024-04-22 6224/week @ 2024-04-29 11221/week @ 2024-05-06 14042/week @ 2024-05-13 9235/week @ 2024-05-20 12405/week @ 2024-05-27 14840/week @ 2024-06-03 10456/week @ 2024-06-10 10374/week @ 2024-06-17 11645/week @ 2024-06-24 11196/week @ 2024-07-01 16526/week @ 2024-07-08 2473/week @ 2024-07-15 11820/week @ 2024-07-22 14519/week @ 2024-07-29 9745/week @ 2024-08-05

38,777 每月下载量
用于 82 个crate(8个直接使用)

MIT/Apache

31KB
590

"FF社区版"

此库是Sean Bowe原始ff库的社区维护分支。库的名称已更改,以便在crates.io发布。

原始ff

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

免责声明

  • 此库不提供恒定时间的保证。

用法

ff_cecrate添加到您的Cargo.toml

[dependencies]
ff_ce = "0.6"

ff_cecrate包含FieldPrimeFieldPrimeFieldReprSqrtField特质。有关更多信息,请参阅[文档](https://docs.rs/ff/0.4.0/ff/)。

#![derive(PrimeField)]

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

首先,启用derivecrate功能

[dependencies]
ff = { ..., features = ["derive"] }

然后像这样使用宏

extern crate rand;
#[macro_use]
extern crate ff_ce;

#[derive(PrimeField)]
#[PrimeFieldModulus = "52435875175126190479447740508185965837690552500527637822603658699938581184513"]
#[PrimeFieldGenerator = "7"]
struct Fp(FpRepr);

就是这样!Fp现在实现了FieldPrimeField。如果支持,Fp还将实现SqrtField。该库实现了FpRepr本身,并为它推导出PrimeFieldRepr

许可证

根据以下任一许可证授权:

任由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,将按照上述方式双许可,不附加任何额外条款或条件。

依赖项

~0.5–1MB
~18K SLoC