8 个版本
0.3.2 | 2021 年 6 月 21 日 |
---|---|
0.3.1 | 2021 年 4 月 20 日 |
0.3.0 | 2021 年 1 月 10 日 |
0.2.2 | 2020 年 4 月 12 日 |
0.1.1 | 2019 年 8 月 7 日 |
#1732 在 密码学
用于 2 crates
140KB
2K SLoC
Tindercrypt
一个支持使用对称加密密钥或密码/短语进行数据加密的库。使用 Protocol Buffers 对加密元数据(盐、nonce 等)进行序列化,并基于 ring Rust 包进行加密原语。
概述
Tindercrypt 的主要目标是提供一个安全且易于使用的 API 用于数据加密。此库的用户只需选择一个加密算法并提供一个密钥/密码短语来加密其数据。要解密数据,他们提供相同的密钥/密码短语。在幕后,Tindercrypt 生成必要的加密元数据(盐、nonce 等)并将其与加密数据捆绑在一起,以便在稍后解密数据时检索它们。
功能
- 不重新发明密码学。使用经过良好测试的 ring 包的加密原语;PBKDF2 用于密钥推导,AES256-GCM/ChaCha20-Poly1305 用于对称加密。
- 所有加密操作都使用合理的默认值;随机 nonce 和盐,密钥推导迭代次数多。
- 通过 Protocol buffers 具有可扩展性和与旧版本的兼容性。
- 用户无需记录;所有必要的解密元数据都捆绑在密文中。
- 提供了一个简单的 CLI 工具,可以加密带有密码的文件。
有关设计概述,请参阅 Tindercrypt 元数据 中的文档部分。
示例
您可以使用密码如下加密(密封)数据缓冲区
use tindercrypt::cryptors::RingCryptor;
let plaintext = "The cake is a lie".as_bytes();
let pass = "My secret passphrase".as_bytes();
let cryptor = RingCryptor::new();
let ciphertext = cryptor.seal_with_passphrase(pass, plaintext)?;
let plaintext2 = cryptor.open(pass, &ciphertext)?;
assert_eq!(plaintext2, plaintext);
您可以在 Tindercrypt 的 RingCryptor
中的文档部分找到更多示例。
CLI 工具中的等效操作如下
$ echo The cake is a lie > plaintext
$ export TINDERCRYPT_PASSPHRASE="My secret passphrase" # Note the extra space.
$ tindercrypt encrypt -i plaintext -o ciphertext
$ tindercrypt decrypt -i ciphertext
The cake is a lie
文档
您可以在 https://docs.rs/tindercrypt 中阅读最新文档。
使用方法
作为库
当将此crate添加到您的Cargo.toml
中时,请使用default -features = false
进行添加,以确保不会将CLI特定的依赖项添加到您的依赖树中
tindercrypt = { version = "x.y.z", default-features = false }
作为二进制文件
您可以使用稳定发布版之一或夜间构建来运行Tindercrypt。或者,您可以使用以下方法之一进行安装
- 从Cargo中
$ cargo install tindercrypt
- 从源码中
$ git clone https://github.com/apyrgio/tindercrypt
$ cd tindercrypt
$ cargo build --release
$ ./target/release/tindercrypt --help
Tindecrypt: File encryption tool ...
贡献
您可以通过阅读CONTRIBUTING.md
指南来获取有关如何为此项目做出贡献的更多信息。
法律
根据MPL-2.0许可。请阅读NOTICE.md
和LICENSE
文件以获取完整的版权和许可信息。如果您想测试自己的心理稳定性,请随时阅读LEGAL.md
文件,了解版权法的相关内容,以及它们如何同时显得无聊和危险。
依赖项
~7–18MB
~342K SLoC