#命令行 #blake3 #加密 #chacha20-poly1305 #aes-gcm #文件加密 #sha-2

bin+lib enc_file

通过命令行加密/解密文件或计算哈希。警告:不要用于任何重要事项,请使用 VeraCrypt 或类似软件。

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密码学

Download history 11/week @ 2024-06-01 8/week @ 2024-06-08 78/week @ 2024-06-29 45/week @ 2024-07-06 106/week @ 2024-07-13 13/week @ 2024-07-20 367/week @ 2024-07-27 22/week @ 2024-08-03

408 每月下载量

MIT 许可证

64KB
754

Enc_File

Rust Crates.io Documentation Crates.io Crates.io Deploy

通过命令行加密/解密文件或计算 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 有不同的选项

警告:不要用于任何重要事项,请使用 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