decrypt

Function decrypt 

Source
pub fn decrypt<T>(
    target: T,
    cipher_version: CipherVersion<'_>,
) -> Result<Vec<u8>, OperationError>
where T: Encryptable,
Expand description

Decrypts a data object using the specified cipher version.

ยงExamples

Decrypting a byte sequence encrypted in AES-192-CBC mode of operation.

use plain_aes::{decrypt, 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: &[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,
];
let decrypted_message = decrypt(encrypted, CipherVersion::Aes192(&key[..], ModeOfOperation::CBC(&iv))).unwrap();
let expected_decrypted = message.as_bytes();
assert!(expected_decrypted.iter().eq(decrypted_message.iter()))

Decrypting a byte sequence encrypted in AES-128-ECB mode of operation.

use plain_aes::{decrypt, ModeOfOperation, CipherVersion};
let key = [
   0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x69, 0x62, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F,
   0x6F, 0x6C,
]; // This lib is cool
let message = "This is a super secret message";
let encrypted: &[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,
];
let decrypted_message = decrypt(encrypted, CipherVersion::Aes128(&key[..], ModeOfOperation::ECB)).unwrap();
let expected_decrypted = message.as_bytes();
assert!(expected_decrypted.iter().eq(decrypted_message.iter()))