4 releases (breaking)

Uses old Rust 2015

new 0.4.0 Jan 8, 2025
0.3.0 Jan 27, 2019
0.2.0 Sep 13, 2018
0.1.0 Mar 6, 2016

#1173 in Cryptography

Download history 40851/week @ 2024-09-18 37863/week @ 2024-09-25 44705/week @ 2024-10-02 43196/week @ 2024-10-09 47088/week @ 2024-10-16 46052/week @ 2024-10-23 47005/week @ 2024-10-30 46437/week @ 2024-11-06 41075/week @ 2024-11-13 40386/week @ 2024-11-20 38259/week @ 2024-11-27 41473/week @ 2024-12-04 36510/week @ 2024-12-11 27477/week @ 2024-12-18 11281/week @ 2024-12-25 26764/week @ 2025-01-01

110,578 downloads per month
Used in 103 crates (9 directly)

MIT/Apache

36KB
635 lines

documenation crates.io link

Adding a Dependency

If you are using a stable Rust build:

[dependencies]
chacha = "0.1.0"

If you need maximum performance, using a nightly Rust build:

[dependencies.chacha]
version = "0.1.0"
features = ["nightly"]

Example

extern crate chacha;

use chacha::{ChaCha, KeyStream};

fn main() {
    let secret_key = [
        0x29, 0xfa, 0x35, 0x60, 0x88, 0x45, 0xc6, 0xf9, 
        0xd8, 0xfe, 0x65, 0xe3, 0x22, 0x0e, 0x5b, 0x05, 
        0x03, 0x4a, 0xa0, 0x9f, 0x9e, 0x27, 0xad, 0x0f, 
        0x6c, 0x90, 0xa5, 0x73, 0xa8, 0x10, 0xe4, 0x94, 
    ];
    let nonce = [0u8; 8];
    let mut stream = ChaCha::new_chacha20(&secret_key, &nonce);

    let mut buffer = *b"abcdef";
    println!("Plaintext = {:?}", buffer);
    stream.xor_read(&mut buffer[..]).expect("hit end of stream far too soon");
    println!("Ciphertext = {:?}", buffer);
}

Dependencies

~125KB