pub struct ZeroPadding;
Expand description
Pad block with zeros.
use block_padding::{ZeroPadding, Padding};
use generic_array::{GenericArray, typenum::U8};
let msg = b"test";
let pos = msg.len();
let mut block: GenericArray::<u8, U8> = [0xff; 8].into();
block[..pos].copy_from_slice(msg);
ZeroPadding::pad(&mut block, pos);
assert_eq!(&block[..], b"test\x00\x00\x00\x00");
let res = ZeroPadding::unpad(&mut block).unwrap();
assert_eq!(res, msg);
Note that zero padding is not reversible for messages which end with one or more zero bytes.
Trait Implementations§
Source§impl Clone for ZeroPadding
impl Clone for ZeroPadding
Source§fn clone(&self) -> ZeroPadding
fn clone(&self) -> ZeroPadding
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for ZeroPadding
impl Debug for ZeroPadding
Source§impl RawPadding for ZeroPadding
impl RawPadding for ZeroPadding
impl Copy for ZeroPadding
Auto Trait Implementations§
impl Freeze for ZeroPadding
impl RefUnwindSafe for ZeroPadding
impl Send for ZeroPadding
impl Sync for ZeroPadding
impl Unpin for ZeroPadding
impl UnwindSafe for ZeroPadding
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, B> Padding<B> for T
impl<T, B> Padding<B> for T
Source§fn pad(block: &mut GenericArray<u8, B>, pos: usize)
fn pad(block: &mut GenericArray<u8, B>, pos: usize)
Pads
block
filled with data up to pos
(i.e length of a message
stored in the block is equal to pos
). Read moreSource§fn unpad(block: &GenericArray<u8, B>) -> Result<&[u8], UnpadError>
fn unpad(block: &GenericArray<u8, B>) -> Result<&[u8], UnpadError>
Unpad data in the
block
. Read moreSource§fn unpad_blocks(blocks: &[Block<BlockSize>]) -> Result<&[u8], UnpadError>
fn unpad_blocks(blocks: &[Block<BlockSize>]) -> Result<&[u8], UnpadError>
Unpad data in the
blocks
. Read more