7个版本 (3个稳定版)
1.2.1 | 2024年7月20日 |
---|---|
1.2.0 | 2024年5月19日 |
0.2.3 | 2024年5月13日 |
0.2.0 | 2024年4月21日 |
0.1.0 |
|
在密码学类别中排名601
每月下载量135
130KB
3K SLoC
这是一个纯Rust平台无关的AES库,专注于可重用性和最佳性能。
该库确保在target_cpu
(如果正确指定)上获得最佳性能。目前有6种实现,其中它会自动使用Cargo的target_feature
标志决定最佳的(性能最出色的)实现。
实现及其要求如下
- AES-NI(带有2-和4-块向量AES)=> 需要Nightly编译器,启用
nightly
特性,并使用带有avx512f
和vaes
目标特性的x86(64)编译。 - AES-NI(带有2块向量AES)=> 需要Nightly编译器,启用
nightly
特性,并使用带有vaes
目标特性的x86(64)编译。(虽然vaes
是AVX-512特性,但一些AlderLake CPU具有不带AVX-512支持的vaes
) - AES-NI => 需要使用带有
sse4.1
和aes
目标特性的x86(64)编译。 - AES-Neon => 需要使用带有
aes
目标特性的AArch64或ARM64EC或ARM-v8编译(ARM-v8需要Nightly编译器和启用nightly
特性)。 - AES-RV => 需要Nightly编译器,启用
nightly
特性,并使用带有zkne
和zknd
目标特性的RISC-V RV64或RV32编译(如果启用unaligned-scalar-mem
目标特性,性能将显著提高) - 软件AES => 基于rijmen和Daemen的优化实现的后备实现
如果您不确定要设置哪些target_feature标志,请在RUSTFLAGS
环境变量中设置target_cpu=native
(如果不是交叉编译),并且如果使用Nightly编译器,则只使用nightly
特性。
警告
使用错误的 target_feature
标志可能导致程序因“未知指令”错误而崩溃。这个库使用这些标志来使用CPU内建函数以最大化性能。如果您不确定您的CPU支持哪些 target_feature
,请使用以下命令:
rustc --print cfg -C target-cpu=native
如果不使用夜间编译器而使用 nightly
功能,可能会导致编译失败,因此只有在您使用夜间编译器时才使用此功能。