40个版本 (22个破坏性版本)
新版本 0.23.2 | 2024年8月14日 |
---|---|
0.23.1 | 2024年1月16日 |
0.23.0 | 2023年7月13日 |
0.17.0 | 2023年3月13日 |
0.2.0 | 2019年6月24日 |
#1409 in 魔法豆
每月下载量12,963次
用于 43 个crate(28个直接使用)
480KB
11K SLoC
crypto.rs
一个边界crate,包含了IOTA基金会认为安全使用的密码原语的选择性实现。
要被列入此列表,实现必须满足以下条件:
- 通过使用最简单可能的类型和高度语义密度的最小接口公开
- 明确指出他们执行什么算法(例如
PBKDF_HMAC_SHA512
) - 尽可能使用显式内存分配,并优先选择
no_std
- 由以下证明:数学证明、审计、安全专家的审查、广泛采用
- 使用从建立的参考实现以及相关规范中可用的测试向量生成的独立测试向量进行测试
算法列表
类型 | 名称 | 功能 | 规范/RFC | Rust源 | 测试源 | 评分* |
---|---|---|---|---|---|---|
加密 | AES-256-GCM | aes |
spec | aes-gcm |
nist | ★★★☆☆ |
加密 | AES-KW | aes-kw |
spec | aes-crate |
nist | ★★★☆☆ |
加密 | XCHACHA20-POLY1305 | chacha |
rfc | chacha20poly1305 |
official | ★★★★★ |
加密 | AES-CBC | aes-cbc |
rfc | crypto.rs |
official | ☆☆☆☆☆ |
散列 | BLAKE2b-160 | blake2b |
rfc | blake2 |
official | ★★★★☆ |
散列 | BLAKE2b-256 | blake2b |
rfc | blake2 |
official | ★★★★☆ |
散列 | CURL-P | curl-p |
rfc | bee-ternary |
official | ★★☆☆☆ |
散列 | SHA2-256 | sha |
spec | sha2 |
nist | ★★★★★ |
散列 | SHA2-384 | sha |
spec | sha2 |
nist | ★★★★★ |
散列 | SHA2-512 | sha |
spec | sha2 |
nist | ★★★★★ |
密钥 | X25519 | x25519 |
RFC7748 | x25519-dalek | official | ★★★★★ |
密钥 | PBKDF2-HMAC-SHA256 | pbkdf |
rfc | pbkdf2 |
self | ★★★★☆ |
密钥 | PBKDF2-HMAC-SHA384 | pbkdf |
rfc | pbkdf2 |
self | ★★★★☆ |
密钥 | PBKDF2-HMAC-SHA512 | pbkdf |
rfc | pbkdf2 |
self | ★★★★☆ |
密钥 | BIP-39 | bip39 |
rfc | crypto.rs |
multilang | ★★☆☆☆ |
密钥 | SLIP-10 | slip10 |
rfc | crypto.rs |
official | ★★★☆☆ |
macs | HMAC-SHA2-256 | hmac |
rfc | hmac |
official | ★★★★☆ |
macs | HMAC-SHA2-384 | hmac |
rfc | hmac |
official | ★★★★☆ |
macs | HMAC-SHA2-512 | hmac |
rfc | hmac |
official | ★★★★☆ |
签名 | Ed25519 | ed25519 |
rfc (草案) | ed25519-zebra |
扩展 | ★★★★☆ |
签名 | Secp256k1 ECDSA | secp256k1 |
spec | k256 |
扩展 | ★★★☆☆ |
工具 | RANDOM | random |
getrandom |
数学 | ★★★★★ |
我们根据对每种算法的一般感觉,为每个算法选择了完全随机的评级。
用法
Cargo.toml
[dependencies.iota-crypto]
git = "https://github.com/iotaledger/crypto.rs"
# be sure to grab the latest github commit revision hash!!!
rev = "09ff1a94d6a87838589ccf1b874cfa3283a00f26"
features = [ "random", "ed25519", "sha", "hmac", "bip39-en" ]
version = "*"
[features]
default = [ "crypto" ]
crypto = [ "iota-crypto" ]
src/main.rs
use crypto::{
ciphers::{aes, aes-kw}
hashes::{blake2b, curl-p, sha}
keys::{bip39, pbkdf, slip10, x25519}
macs::hmac
signatures::ed25519
utils::random
}
参考
cargo doc --workspace --no-deps --open
警告
这个库尚未经过安全审计,因此请自行承担使用风险。在正式的第三方安全审计进行之前,IOTA基金会不对该库的适用性做出任何保证。
因此,它们应被视为实验性的,尚未准备好用于实际应用。
尽管如此,我们对关于设计和实现的反馈非常感兴趣,并鼓励您提出任何疑问或建议。
审阅者
分别审阅实现和API。使用不同的功能标志验证依赖项树。
贡献者
- 关注提供各种测试向量,超过了任何关于选择初始实现(如性能)的担忧。
- 审阅导入的代码
硬件/操作系统社区测试
- 待定:测试硬件矩阵。
讨论
如果您对这个库的使用方式或为何做出某些决定有任何疑问,请创建新的讨论。
测试
cargo test --lib --all --all-features --tests
Doctest
我们旨在为每个接口提供至少一个docstest,因此要了解实际使用情况,请查阅rustdocs。
许可证
Apache 2.0
依赖关系
~0–2.9MB
~55K SLoC