pub fn pa_zeros(input_vec: &mut Vec<u8>) -> usize
Expand description

Add Zeros padding

  • parameter input_vec: the vec that contains original data.
  • return : the added bytes’ length.

This padding has never been standardized in cryptography specifications. So, NOT recommended. This padding here maybe differ from it in other implements, because this function still adds a complete block after the complete end-block, while maybe some other implements don’t and only add to the incomplete end-block. If you are looking for function like that, see pa_zeros_ifnotcomplete.

Attention! If the origin data ends with zero(s) (one or more 0xFF), depadding will remove all these zeros.

Examples

use aes_frast::padding_128bit::pa_zeros;

let mut origin = vec![0xFFu8; 7];
let padding_length = pa_zeros(&mut origin);

assert_eq!(padding_length, 9);
assert_eq!(origin, vec![0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0x00u8,
                        0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8]);

origin = vec![0xFFu8; 16];
let padding_length = pa_zeros(&mut origin);

assert_eq!(padding_length, 16);
assert_eq!(origin, vec![0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8,
                        0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8, 0xFFu8,
                        0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8,
                        0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8, 0x00u8]);