#des #crypto #triple-des

bin+lib easydes

在 Rust 中轻松使用 DES 加密

7 个版本

0.1.6 2024 年 5 月 22 日
0.1.5 2024 年 5 月 8 日

#376 in 密码学

GPL-2.0-or-later

43KB
710

Easydes

在 Rust 中轻松使用 DES 加密。

这是一个实现 DES 密码学算法的 Rust 库。

运行

easydes --help
easydes <VERSION>
Encrypt and decrypt with DES.

USAGE:
    easydes [OPTIONS] --key <KEY> --infile <INPATH> <-e|-d>

OPTIONS:
    -3, --triple_des           Encrypt/Decrypt using Triple DES.
    -d                         Decrypt
    -e                         Encrypt
    -h, --help                 Print help information
    -i, --iv <IV>              Encryption/Decryption IV. Only used in CBC.
        --infile <INPATH>      Specify the path to the input file.
    -k, --key <KEY>            Encryption/Decryption key
    -m <MODE>                  Specify the mode. Default is ECB which doesn't require an IV.
                               [default: ECB] [possible values: ECB, CBC]
        --outfile <OUTPATH>    Specify the path to the output file.
    -v                         Enable verbose logging
    -V, --version              Print version information

示例

要加密文件,运行

easydes --key 133457799BBCDFF1 --iv 0000000000000000 -m CBC -e --infile tests/infile.txt  --outfile output.enc

要解密此文件,可以运行

easydes --key 133457799BBCDFF1 --iv 0000000000000000 -m CBC -d --infile output.enc  --outfile plaintext.txt

三重 DES

要使用三重 DES 加密文件,运行

easydes -3 --key 133457799BBCDFF111111111111111112222222222222222 --iv 1111111111111111 -m CBC -e --infile tests/infile.txt  --outfile output.enc

要解密此文件,可以运行

easydes -3 --key 133457799BBCDFF111111111111111112222222222222222 --iv 1111111111111111 -m CBC -d --infile output.enc --outfile clear.txt; cat clear.txt

构建

要使用 cargo 构建二进制文件,运行

cargo build --release

使用库

通过包含

    use easydes::easydes::*;

,你可以在自己的库中使用 DES 函数。例如


    let plaintext: &str = "HelloWorldHelloWorld";
    let key: [u8; 8] = [0x13, 0x34, 0x57, 0x79, 0x9B, 0xBC, 0xDF, 0xF1];
    let iv: [u8; 8] = [0x01 as u8; 8];

    let mut ciphertext = easydes::des_cbc(
        &key,
        &iv,
        &mut plaintext.as_bytes().to_vec(),
        easydes::Des::Encrypt,
    );

    println!("{:#02x?}", ciphertext);

    let mut plaintext_again: Vec<u8> =
        easydes::des_cbc(&key, &iv, &mut ciphertext, easydes::Des::Decrypt);

测试

请参阅 TESTING.md

许可证

请阅读 LICENSE.md

依赖项

~1.5MB
~25K SLoC