Function aes_frast::aes_with_operation_mode::ecb_enc
[−]
[src]
pub fn ecb_enc(plain: &[u8], cipher: &mut [u8], keys: &[u32]) -> Vec<u8>
ECB (Electronic Codebook) Encryption
This function encrypts a long plain from the first parameter and put the long cipher
into the second parameter, using the scheduled keys in the third parameter.
Finally, it returns the final block of the cipher (NOT the plain).
(This picture comes from the Wikimedia Commons)
Examples
use aes_frast::{aes_core, aes_with_operation_mode, padding_128bit}; let length: usize = 64; let mut plain: Vec<u8> = vec![0x4E, 0xFD, 0x06, 0xB2, 0xCE, 0xEE, 0x59, 0x02, 0xCA, 0xE8, 0x4E, 0x58, 0xFC, 0x50, 0x92, 0x1E, 0xF0, 0x8D, 0xD2, 0x30, 0xB9, 0xC4, 0x1D, 0x1C, 0xD2, 0xEB, 0x88, 0x1D, 0xE7, 0x4A, 0xF7, 0x7B, 0x36, 0x75, 0xA9, 0x68, 0x03, 0xB9, 0x39, 0xDF, 0xFB, 0x9E, 0x80, 0x85, 0x1C, 0x73, 0x54, 0xBF, 0x2A, 0xE4, 0xAD, 0x0E, 0x43, 0x58, 0xDE, 0x88, 0xDF, 0xE9, 0xDF, 0xE1, 0x66, 0x3B, 0x1A, 0x7F]; let mut cipher = vec![0u8; length + 16]; let mut dec_cipher = vec![0u8; length + 16]; let mut o_key: Vec<u8> = vec![0xDE, 0xA6, 0xE1, 0x3A, 0x82, 0xFF, 0x95, 0x11, 0x86, 0x2D, 0xC1, 0x5A, 0x8E, 0xFA, 0xBE, 0xD4, 0x3B, 0x52, 0x28, 0x78, 0xE2, 0x49, 0x1F, 0x86, 0x0A, 0xB6, 0xE0, 0xCD, 0xBD, 0xDD, 0xCC, 0x2E]; let mut w_keys: Vec<u32> = vec![0u32; 60]; aes_core::setkey_enc_auto(&o_key, &mut w_keys); padding_128bit::pa_pkcs7(&mut plain); aes_with_operation_mode::ecb_enc(&plain, &mut cipher, &w_keys); let expected_encrypted = vec![0x48, 0x52, 0xC9, 0xB1, 0xD0, 0x45, 0xA4, 0xC1, 0x8C, 0xCF, 0x98, 0xEF, 0x57, 0x97, 0x62, 0xAC, 0x1D, 0xD5, 0x1A, 0xBC, 0xF6, 0x4F, 0xED, 0xD6, 0xAD, 0x18, 0x46, 0x4B, 0xED, 0x28, 0xC0, 0xC6, 0x72, 0xBD, 0x54, 0x49, 0x11, 0x93, 0xE3, 0xAE, 0xE8, 0x49, 0x9C, 0x84, 0x7C, 0xD5, 0x99, 0x41, 0x0B, 0x5D, 0x80, 0x07, 0x6A, 0x87, 0x6F, 0xFB, 0x45, 0x75, 0xE6, 0x38, 0x8A, 0x5C, 0x0D, 0x03, 0xFA, 0x60, 0x15, 0x86, 0x83, 0x02, 0x2E, 0xD9, 0x27, 0x56, 0x65, 0x6B, 0xFE, 0x68, 0x5F, 0xF3]; assert_eq!(length + 16, cipher.len()); for i in 0..(length + 16) { assert_eq!(expected_encrypted[i], cipher[i]); } aes_core::setkey_dec_auto(&o_key, &mut w_keys); aes_with_operation_mode::ecb_dec(&cipher, &mut dec_cipher, &w_keys); padding_128bit::de_ansix923_pkcs7(&mut dec_cipher); assert_eq!(length, dec_cipher.len()); for i in 0..length { assert_eq!(plain[i], dec_cipher[i]); }