[−][src]Crate c2_chacha
Pure Rust ChaCha with SIMD optimizations.
Usage:
extern crate c2_chacha; use c2_chacha::stream_cipher::{NewStreamCipher, SyncStreamCipher, SyncStreamCipherSeek}; use c2_chacha::{ChaCha20, ChaCha12}; let key = b"very secret key-the most secret."; let iv = b"my nonce"; let plaintext = b"The quick brown fox jumps over the lazy dog."; let mut buffer = plaintext.to_vec(); // create cipher instance let mut cipher = ChaCha20::new_var(key, iv).unwrap(); // apply keystream (encrypt) cipher.apply_keystream(&mut buffer); // and decrypt it back cipher.seek(0); cipher.apply_keystream(&mut buffer); // stream ciphers can be used with streaming messages let mut cipher = ChaCha12::new_var(key, iv).unwrap(); for chunk in buffer.chunks_mut(3) { cipher.apply_keystream(chunk); }
Re-exports
pub extern crate stream_cipher; |
Type Definitions
ChaCha8 | Similar to ChaCha20, but with fewer rounds for higher performance. |
ChaCha12 | Similar to ChaCha20, but with fewer rounds for higher performance. |
ChaCha20 | ChaCha20, as used in several standards; from Bernstein's original publication. |
Ietf | IETF RFC 7539 ChaCha. Unsuitable for messages longer than 256 GiB. |
XChaCha20 | Constructed analogously to XSalsa20; mixes during initialization to support both a long nonce and a full-length (64-bit) block counter. |