#cbc #speck

nightly no-std speck-cbc

SPECK密码的Cipher Block Chaining (CBC)模式,适用于Rust

3个版本

使用旧的Rust 2015

0.1.2 2017年9月5日
0.1.1 2017年8月5日
0.1.0 2017年8月5日

1443 in 加密学

MIT许可证

7KB

这是一个SPECK密码的Cipher Block Chaining (CBC)模式的Rust实现。

除非你确切知道自己在做什么,否则不要使用此库,因为某些情况下存在针对CBC模式的实际攻击。

示例

#
use rand::{Rng, OsRng};
use byteorder::NetworkEndian;

// This should probably be derived from an exchanged key or a password.
let key = [0u8; speck_cbc::BLOCK_SIZE];

let input = b"This is a test.";
let mut buffer: Vec<u8> = input.to_vec();

// Sender.
let mut iv = [0u8; speck_cbc::BLOCK_SIZE];
OsRng::new()?.fill_bytes(&mut iv);
pkcs7::pad(&mut buffer, speck_cbc::BLOCK_SIZE as u8);
speck_cbc::encrypt::<NetworkEndian>(&mut buffer, &key, &iv);

// Message authenticity needs to be provided between `encrypt` and `decrypt`.

// Receiver.
speck_cbc::decrypt::<NetworkEndian>(&mut buffer, &key, &iv);
pkcs7::un_pad(&mut buffer);

assert_eq!(buffer.as_slice(), input);

依赖项

~125KB