62 个版本
0.4.15 | 2024 年 7 月 16 日 |
---|---|
0.4.10 | 2024 年 3 月 12 日 |
0.4.9 | 2023 年 9 月 21 日 |
0.4.7 | 2023 年 7 月 4 日 |
0.1.1 | 2020 年 3 月 12 日 |
120 在 密码学 中
408 每月下载量
64KB
754 行
Enc_File
通过命令行加密/解密文件或计算 HASH。使用 Rust 编写,不使用不安全代码。
使用 XChaCha20Poly1305 (https://docs.rs/chacha20poly1305) 或 AES-256-GCM-SIV (https://docs.rs/aes-gcm-siv) 进行加密/解密,使用 bincode (https://docs.rs/bincode) 进行编码,使用 BLAKE3 (https://docs.rs/blake3), SHA2-256 / SHA2-512 (https://docs.rs/sha2) 或 SHA3-256 / SHA3-512 (https://docs.rs/sha3) 进行哈希计算。
XChaCha20Poly1305 和 AES256-GCM-SIV 与 ChaCha20Poly1305 或 AES-GCM 相比,提供了更高的保护以防止(意外)nonce 重用。
加密文件必须存储为 .crpt 格式。
加密和解密将覆盖现有文件!
错误时发生恐慌,使安全执行变得不可能,但大多数函数返回结果。
安装:安装 Enc_File 有不同的选项
- 使用
cargo install enc_file
全局安装 enc_file 二进制文件。 - 访问 https://github.com/ArdentEmpiricist/enc_file/releases 并下载适用于您的操作系统的可执行二进制文件
- 克隆 GitHub 仓库并从源代码构建。
警告:不要用于任何重要事项,请使用 VeraCrypt 或类似软件。
此软件包尚未经过任何形式的审计或审查。我创建它是为了轻松加密和解密不重要的文件,如果第三方知道这些文件,也不会造成损害。
用法
主菜单(如果未提供任何命令行参数启动)
Please enter the corresponding number to continue:
1 Add new key
2 Remove key
3 Encrypt file using XChaCha20Poly1305
4 Decrypt file using XChaCha20Poly1305
5 Encrypt file using AES-256-GCM-SIV
6 Decrypt file using AES-256-GCM-SIV
7 Calculate Hash
在首次运行或未检测到密钥文件时提供生成新密钥文件选项。密钥文件必须位于程序目录中。
直接计算哈希
使用 enc_file hash file_name
计算 BLAKE3 哈希,enc_file hash_sha2_256 file_name
计算 SHA2-256 哈希,enc_file hash_sha2_512 file_name
计算 SHA2-512 哈希,enc_file hash_sha3_256 file_name
计算 SHA3-256 哈希,enc_file hash_sha3_512 file_name
计算 SHA3-512 哈希。
示例:enc_file hash ./cargo.toml
-> Hash(65c3342975adeb00ec05dcfab6ccb6af877d3f996957742ec6365541546812e4)
重大变更
版本 0.3 的重大变更:更改了一些函数的输入。例如,使用 "encrypt_chacha(readfile(example.file).unwrap(), key).unwrap()" 来加密/解密和哈希。通过键映射来方便地使用多个密钥。您可以通过“添加密钥” -> “手动”导入您旧密钥。
版本 0.2 的重大变更:使用 XChaCha20Poly1305 作为默认的加密/解密。仍可通过 encrypt_aes 或 decrypt_aes 使用 AES 以保持向后兼容性。
示例
使用 XChaCha20Poly1305 和随机 nonce 加密/解密
use enc_file::{encrypt_chacha, decrypt_chacha};
let text = b"This is a test"; //Plaintext to encrypt
let key: &str = "an example very very secret key."; //Key will normally be chosen from keymap and provided to the encrypt_chacha() function
let text_vec = text.to_vec(); //Convert text to Vec<u8>
//Ciphertext stores the len() of encrypted content, the nonce and the actual ciphertext using bincode
let ciphertext = encrypt_chacha(text_vec, key).unwrap(); //encrypt vec<u8>, returns result(Vec<u8>)
//let ciphertext = encrypt_chacha(read_file(example.file).unwrap(), key).unwrap(); //read a file as Vec<u8> and then encrypt
assert_ne!(&ciphertext, &text); //Check that plaintext != ciphertext
let plaintext = decrypt_chacha(ciphertext, key).unwrap(); //Decrypt ciphertext to plaintext
assert_eq!(format!("{:?}", text), format!("{:?}", plaintext)); //Check that text == plaintext
计算 Blake3 哈希
use enc_file::{get_blake3_hash};
let test = b"Calculating the BLAKE3 Hash of this text";
let test_vec = test.to_vec(); //Convert text to Vec<u8>
let hash1 = get_blake3_hash(test_vec.clone()).unwrap();
let hash2 = get_blake3_hash(test_vec).unwrap();
assert_eq!(hash1, hash2); //Make sure hash1 == hash2
let test2 = b"Calculating the BLAKE3 Hash of this text."; //"." added at the end
let test2_vec = test2.to_vec();
let hash3 = get_blake3_hash(test2_vec).unwrap();
assert_ne!(hash1, hash3); //check that the added "." changes the hash
待办事项
- 在硬盘上添加加密映射以使用多个密钥
- 添加主菜单以引导过程
- 启用命令行参数以计算哈希
- 可能:启用命令行参数进行加密/解密
问题和反馈非常受欢迎。
依赖项
约 6MB
约 110K SLoC