6 个版本 (3 个破坏性版本)
0.7.0 | 2024 年 5 月 25 日 |
---|---|
0.5.0 | 2024 年 3 月 21 日 |
0.3.2 | 2024 年 3 月 10 日 |
0.3.0 | 2023 年 12 月 30 日 |
0.1.2 |
|
#129 in 加密学
每月 42 次下载
56KB
528 代码行
Rufendec:快速文件加密命令行工具
Rufendec(Rust 文件加密解密工具)是一个轻量级的 CLI 工具,用于 AES-256 加密和解密。此工具简化了保护用户指定源目录内容的过程。在 ECB/GCM 模式下运行,Rufendec 在目标目录中保持原始文件名和子目录结构。通过 Rufendec 探索 Rust 在强大加密和解密任务中的简洁性。
功能
- 使用 AES-256 GCM 模式加密和解密多个文件。GCM 被选为默认模式。
- 程序是线程化的,因此用户可以手动选择线程数。
- 对于 Linux 用户,可以维护扩展名为 ".omk" 的密码文件在 /etc、/home、/root 或当前目录(".")。对于 Windows,文件可以放在当前目录或 "C:/WINDOWS/SYSTEM32/config"。
- 使用 PBKDF2-HMAC-SHA256 进行密钥派生。程序默认使用的迭代次数为 60000。
- 程序拒绝加密已加密的源文件,作为防止双重加密的安全机制。
- 如果没有指定目标目录作为命令行参数,则可以在原位进行文件加密和解密。
- 可以通过传递 "-d" 选项删除源文件。
- 使用 "-v" 选项进行详细输出。
如何使用
这是一个 rust 二进制 crate,因此必须明显地将其视为可执行文件。如果您已经知道 Cargo 是什么以及如何使用它,那么请继续运行 Rufendec
并安装它,命令如下:cargo install rufendec
如果您有可执行文件/二进制文件,请尝试使用以下命令运行程序:rufendec --help
。但是,如果您不希望在系统上永久安装此程序,则 CD(更改目录)到克隆的 git 仓库并运行 cargo run -- --help
。
无论如何,执行 Rufendec 的结果将类似于以下内容。
Rufendec (The Rust File Encryptor-Decryptor) is a lightweight CLI tool designed for AES-256 encryption and decryption. This tool simplifies the process of securing the contents of a user specified source directory. Operating in ECB/GCM modes, Rufendec maintains the original file names and sub-directory structure in the target directory. Explore the simplicity of Rust for robust encryption and decryption tasks with Rufendec.
Usage: rufendec [OPTIONS] --operation <OPERATION> <SOURCE_DIR> [TARGET_DIR]
Arguments:
<SOURCE_DIR> Enter the Source Dir here (This is the directory you want to either Encrypt or Decrypt)
[TARGET_DIR] Enter the Target Dir here (This is the place where your Encrypted or Decrypted files will go). But if you do not provide this, the target files will be placed in the Source Dir. To delete the source files make sure you pass option -d
Options:
-d, --delete-src Pass this option to delete the source files in the Source Dir
-p, --password-file <PASSWORD_FILE> Enter the password file with an extension ".omk". The first line in the file must have the password, and If you choose mode=gcm then ensure to pass the "Salt" in the 2nd line [default: ]
-o, --operation <OPERATION> Enter the Operation you want to perform on the Source Dir [possible values: encrypt, decrypt]
-t, --threads <THREADS> Threads to speed up the execution [default: 8]
-m, --mode <MODE> Provide the mode of Encryption here [default: gcm] [possible values: ecb, gcm]
-i, --iterations <ITERATIONS> Iterations --mode=gcm [default: 60000]
-v, --verbose Print verbose output
-h, --help Print help
-V, --version Print version
演示
如何加密
为了说明如何使用它,假设您想使用密码加密目录 ./source-dir
中的所有文件。一个示例密码可以是 Thisi/MyKeyT0Encryp,该密码保存在一个密码文件中。现在,您想将这个 "./source-dir" 目录中的所有文件加密,并将它们放入目标目录,例如 ./target-dir
,同时 保留源中的完整文件名和子目录结构。然后您可以运行如下命令
cargo run ../source-dir ../target-dir --password-file=../passwordfile --operation=encrypt --mode=ecb
或者
rufendec ./source-dir ./target-dir --password-file=./passwordfile --operation=encrypt --mode=ecb
以下是命令的一些变体
rufendec ./source-dir ./target-dir --password-file ./passwordfile --operation encrypt --mode ecb
OR
rufendec ./source-dir ./target-dir -p ./passwordfile -o encrypt -m gcm -t 12 -i 100000
OR
rufendec ./source-dir ./target-dir -o encrypt
OR
rufendec ./source-dir -o encrypt
模式、线程和迭代次数具有默认值,因此您不需要传递它们。另外,如果您在 /etc、/home、/root、"."、".."、"../../" 中维护密码文件,则不需要传递 -p 选项。
如何解密
现在假设您在成功加密文件后删除了 "source-dir" 目录,但现在您想要解密文件以及相应的父目录和结构。
要解密当前拥有的 "target-dir" 中的加密文件,只需运行以下命令。完成后,原始文件将回到您的 source-dir。
cargo run ../target-dir ../source-dir --password-file=../passwordfile --operation=decrypt --mode=ecb
或者
rufendec ./target-dir ./source-dir --password-file=./passwordfile --operation=decrypt --mode=ecb
在上面的示例中,名称 source-dir
和 target-dir
是任意的。您可以使用任何名称来命名源和目标目录。如果目标目录尚未创建,则会创建它。
注意:在密码文件中,您必须在第一行指定密码,在第二行指定盐。由于程序中的密钥生成是通过 PBKDF2 进行的,因此密码和盐可以具有任意长度。
./passwordfile 中的示例上下文
Som3RandPa$$wdOfAnyLength
SomethingSaltIGiveOfAnyLength
就地加密和解密
如果您不想创建单独的目标目录,无论是为了放置加密文件还是解密文件,那么您不应该在命令行中传递 [TARGET_DIR] 参数。此外,您必须发送 -d
选项来删除
⚠️ 警告 ⚠️
使用此程序必须考虑是危险的。由于这是一个文件加密软件,如果使用不当,您可能会永远丢失数据。我强烈建议您首先在一个测试文件夹中使用您想要加密的文件进行测试,然后尝试解密,通过比较它们的校验和来查看文件内容是否仍然相同。请注意,对于 pdf 等文件类型,校验和可能与元数据(如创建时间、修改时间)不同。
请备份您要加密的任何内容。我再重复一遍,备份备份备份!!!尽可能频繁地进行备份。
如果您在代码中发现任何安全漏洞,请私下提交问题。
遵守的规则
-
确保您不是在尝试解密未加密的文件或加密已加密的文件。在处理大文件时避免使用过多的线程。例如,如果您有 10 个各 1 GB 的文件,并且同时使用 10 个线程,那么将消耗 10 GB 的内存。
-
建议不要加密与 utf-8 不兼容的文件,例如二进制文件/可执行文件。它将创建或跳过此类文件,但请确保您最初不要尝试加密此类文件。如果这样做,则在解密时,二进制文件可能或可能无法正常工作。
-
如果您使用 --mode=gcm 加密了文件,然后尝试使用 --mode=ecb 解密,则程序将生成您的解密目标文件,但那些文件将会损坏,充满乱码。
-
如果你的文件夹和文件名中包含除字母数字以外的字符(空格可以),那么请勿与该程序一起使用它们。程序不会拒绝使用它们,但你的文件会因为文件和文件夹名中的特殊字符而放置在奇怪的位置。
-
如果你没有指定目标目录,确保你不会在过程中停止。允许操作完全完成。
确保你为所选操作提供了正确的文件。在使用重要文件之前进行一些测试。
自行承担风险!
此软件需要维护吗?
是的。此软件确实需要维护,但只有在两种情况下。
- 如果Cargo.toml中的依赖包发生变化版本,并且作者撤回了旧版本。但这几乎不可能发生。即使如此,你仍然可以在github发布中找到编译后的版本。
- 如果有人发现了一个错误并报告了它。
基准测试
CPU:Intel i5(4核心)@ 3.300GHz
GPU:Intel 第二代核心处理器系列
RAM:11835 MiB
Linux Mint 21.1 X86_64
创建的目标文件夹:1431
创建的目标文件:6435
源文件夹大小:1.6 GiB
加密耗时13秒,速率为123 MiB/sec
解密耗时11秒,速率为145.5 MiB/sec
依赖
~6–14MB
~163K SLoC