pub fn encrypt<T>(
target: T,
cipher_version: CipherVersion<'_>,
) -> Result<Vec<u8>, OperationError>where
T: Encryptable,Expand description
Encrypts a data object using the specified cipher version.
ยงExamples
Encrypting a text message in AES-128-ECB mode of operation.
use plain_aes::{encrypt, ModeOfOperation, CipherVersion};
let message = "This is a super secret message";
let key = "This lib is cool";
let encrypted_message = encrypt(message, CipherVersion::Aes128(key.as_bytes(), ModeOfOperation::ECB)).unwrap();
let expected_enrypted: &[u8] = &[
0x11, 0x2B, 0xBD, 0x0D, 0x4C, 0x0C, 0xC5, 0x02, 0xB4, 0xC1, 0x38, 0xFD, 0x9A, 0x56,
0xC1, 0xA8, 0x78, 0x61, 0xD9, 0xF5, 0x6B, 0x48, 0xCC, 0xC5, 0x48, 0x14, 0xF2, 0x8C,
0x1A, 0x25, 0x11, 0xA3,
];
assert!(expected_enrypted.iter().eq(encrypted_message.iter()))Encrypting a text message in AES-192-CBC mode of operation.
use plain_aes::{encrypt, ModeOfOperation, CipherVersion};
let iv: [u8; 16] = [
0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x69, 0x62, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F,
0x6F, 0x6C,
]; // You should not pass a fixed IV, this is for testing purposes.
let message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ultricies egestas nunc luctus congue. Pellentesque in vehicula lectus. Maecenas facilisis in tellus non accumsan. Cras at nisl eros. Donec efficitur dolor vitae odio cursus semper. Nulla facilisi. Nunc sit amet congue tellus. Ut sollicitudin odio ac odio malesuada, in sodales turpis pharetra.";
let key = [0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x69, 0x62, 0x20, 0x63, 0x6F, 0x6F, 0x6C, 0x20, 0x79, 0x61, 0x64, 0x61, 0x20, 0x79, 0x61, 0x64, 0x61, 0x2E,]; // This lib cool yada yada.
let encrypted_message = encrypt(message, CipherVersion::Aes192(&key[..], ModeOfOperation::CBC(&iv))).unwrap();
let expected_enrypted: &[u8] = &[
0x65,0xB9,0x79,0x89,0xFE,0x5F,0x15,0xC3,0x0A,0x33,0xAF,0xAD,0xE7,0xA1,0x60,0x14,0x86,0x91,0x85,0x57,0x82,0x51,0xC2,0x15,0x24,0x52,0x69,0x16,0x69,0x11,0x54,0x42,0xFE,0x45,0x0A,0x5E,0x87,0xC7,0x30,0x74,0x93,0xBD,0x24,0x3F,0xBB,0x21,0xD7,0xC9,0x22,0xAB,0x7D,0x0C,0xEA,0x4B,0x26,0x3B,0x97,0x7D,0x52,0x19,0x56,0x14,0x02,0x7A,0x70,0x70,0xC7,0x2D,0x1A,0x99,0xA6,0x65,0x89,0x34,0x9F,0x84,0xE3,0xC6,0x8B,0x06,0x8B,0x6A,0x2F,0xD8,0x71,0xFC,0x25,0xAF,0x6C,0x56,0x76,0xB5,0xF2,0x5B,0xD5,0x09,0xD2,0xE4,0x53,0xDB,0x6A,0x81,0xFE,0x42,0x7D,0xB6,0x77,0x0E,0x72,0xCB,0x90,0xDD,0x89,0xCA,0xA5,0x66,0x18,0x20,0xD3,0xD3,0x2D,0x56,0xA9,0x8D,0x25,0x8D,0x30,0x4A,0x1D,0x09,0x6E,0x90,0xFC,0x02,0x0E,0x4F,0x0C,0x04,0x46,0x7F,0x34,0xA6,0x4C,0xAA,0x5B,0xD1,0x05,0x67,0x7A,0xC4,0x52,0x1A,0x1C,0x29,0x6D,0x21,0xF8,0x88,0x6B,0x70,0x55,0xC2,0x00,0x94,0x5E,0x78,0x8F,0x53,0x05,0x50,0xB6,0xDF,0x2D,0x38,0x4D,0x76,0x0D,0x4E,0xC4,0xCB,0x1F,0xBA,0x46,0x65,0x95,0xBE,0xDC,0x89,0x83,0x78,0x25,0x2F,0xA1,0xA6,0x53,0x8D,0xAB,0x61,0xB4,0xF3,0x2B,0x6B,0x72,0x03,0xD7,0x54,0xFF,0xCB,0xA6,0xA1,0x26,0x97,0x84,0x43,0x26,0x49,0xDC,0x3E,0x14,0xCC,0x99,0x8F,0x30,0xE7,0xF6,0x11,0x40,0x87,0x9F,0xB2,0x65,0x40,0xB0,0x96,0x3D,0x6A,0x9D,0x89,0xC1,0x0F,0x25,0x4B,0x9F,0x26,0x5A,0x9F,0x52,0xC9,0x8D,0x72,0xE6,0x1F,0x0F,0xB8,0x2D,0x4F,0xA1,0x9F,0x29,0xEE,0xD2,0x61,0x61,0x6A,0x03,0xDF,0x33,0xB4,0xE8,0xA8,0x6F,0x73,0x87,0xAD,0xB4,0x93,0xB6,0xFA,0x76,0xCA,0x5C,0x38,0x01,0x0D,0x2B,0xC1,0x18,0xF5,0x4D,0x0F,0x84,0x08,0x94,0xCB,0xBE,0x91,0x7B,0x3D,0x5A,0xCD,0xE4,0x92,0x2B,0xD3,0xF4,0x02,0xB5,0x1B,0xEC,0x68,0xFB,0x72,0xAA,0x62,0x6B,0xA0,0xD2,0xF7,0xAB,0xF1,0x2E,0xCC,0xFB,0x38,0xBC,0xE0,0x83,0xB1,0x70,0xA5,0x94,0xF4,0xB3,0x92,0x2D,0x94,0xD2,0x5C,0x24,0x38,0x31,0xAB,0x59,0x29,0xE5,0x7A,0x98,0xF3,0x60,0x24,0x45,0xAD,0x55,0x57,0x5F,0x24,0x99,0xC0,0xD9,0x11,0xE1,0xEB,0x4C,0xDB,0xA4,0xCE,0x82,0xC2,
];
assert!(expected_enrypted.iter().eq(encrypted_message.iter()))