6 个版本

0.2.0 2022年9月15日
0.1.4 2022年5月9日
0.1.2 2022年1月24日
0.1.1 2021年10月31日

#1559 in 密码学

Download history 98/week @ 2024-03-13 53/week @ 2024-03-20 93/week @ 2024-03-27 52/week @ 2024-04-03 52/week @ 2024-04-10 46/week @ 2024-04-17 65/week @ 2024-04-24 49/week @ 2024-05-01 77/week @ 2024-05-08 14/week @ 2024-05-15 64/week @ 2024-05-22 20/week @ 2024-05-29 17/week @ 2024-06-05 25/week @ 2024-06-12 9/week @ 2024-06-19 3/week @ 2024-06-26

56 次每月下载

MIT/Apache

39KB
938

aead-io

提供对 Write/Read 对象和 StreamPrimitive 的包装,以提供一个易于使用正确加密的接口。

let key = b"my very super super secret key!!".into();
let plaintext = b"hello world!";

let ciphertext = {
    let mut ciphertext = Vec::default();
    let mut writer = EncryptBE32BufWriter::<ChaCha20Poly1305, _, _>::new(
        key,
        &Default::default(), // please use a better nonce ;)
        Vec::with_capacity(128),
        &mut ciphertext,
    )
    .unwrap();
    writer.write_all(plaintext)?;
    writer.flush()?;
    ciphertext
};

let decrypted = {
    let mut reader = DecryptBE32BufReader::<ChaCha20Poly1305, _, _>::new(
        key,
        Vec::with_capacity(256),
        ciphertext.as_slice(),
    )
    .unwrap();
    let mut out = Vec::new();
    let _ = reader.read_to_end(&mut out).unwrap();
    out
};

assert_eq!(decrypted, plaintext);
#

no_std

此包与 no_std 环境兼容。只需禁用默认功能,并相应地实现 BufferCappedBufferResizeBufferWriteRead。应该为 Vec<u8> 和字节切片提供一些默认实现。

许可协议:MIT OR Apache-2.0

依赖项

~325KB