#encryption #key-derivation #encryption-key #buffer #protobuf #serialization

bin+lib tindercrypt

使用对称加密密钥或密码/短语进行数据加密,并包含加密元数据

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

MPL-2.0 许可证

140KB
2K SLoC

Tindercrypt

一个支持使用对称加密密钥或密码/短语进行数据加密的库。使用 Protocol Buffers 对加密元数据(盐、nonce 等)进行序列化,并基于 ring Rust 包进行加密原语。

CI Crates.io Docs.rs

概述

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.mdLICENSE文件以获取完整的版权和许可信息。如果您想测试自己的心理稳定性,请随时阅读LEGAL.md文件,了解版权法的相关内容,以及它们如何同时显得无聊和危险。

依赖项

~7–18MB
~342K SLoC