[][src]Crate ctr

Generic implementations of CTR mode for block ciphers.

Mode functionality is accessed using traits from re-exported cipher crate.

⚠️ Security Warning: Hazmat!

This crate does not ensure ciphertexts are authentic! Thus ciphertext integrity is not verified, which can lead to serious vulnerabilities!

Ctr128 Usage Example

use ctr::cipher::{NewCipher, StreamCipher, StreamCipherSeek};

// `aes` crate provides AES block cipher implementation
type Aes128Ctr = ctr::Ctr128BE<aes::Aes128>;

let mut data = [1, 2, 3, 4, 5, 6, 7];

let key = b"very secret key.";
let nonce = b"and secret nonce";

// create cipher instance
let mut cipher = Aes128Ctr::new(key.into(), nonce.into());

// apply keystream (encrypt)
cipher.apply_keystream(&mut data);
assert_eq!(data, [6, 245, 126, 124, 180, 146, 37]);

// seek to the keystream beginning and apply it again to the `data` (decrypt)
cipher.seek(0);
cipher.apply_keystream(&mut data);
assert_eq!(data, [1, 2, 3, 4, 5, 6, 7]);

Re-exports

pub use cipher;

Modules

flavors

CTR mode flavors

Structs

Ctr

Generic CTR block mode isntance.

Type Definitions

Ctr32BE

CTR mode with 32-bit big endian counter.

Ctr32LE

CTR mode with 32-bit little endian counter.

Ctr64BE

CTR mode with 64-bit big endian counter.

Ctr64LE

CTR mode with 64-bit little endian counter.

Ctr128BE

CTR mode with 128-bit big endian counter.

Ctr128LE

CTR mode with 128-bit little endian counter.