pub fn random_iv_or_salt(iv_or_salt: &mut [u8]) {
use rand::RngExt;
if iv_or_salt.is_empty() {
return;
}
let mut rng = rand::rng();
loop {
rng.fill(iv_or_salt);
let (prefix, aligned, suffix) = unsafe { iv_or_salt.align_to::<u128>() };
let is_zeros =
prefix.iter().all(|&x| x == 0) && aligned.iter().all(|&x| x == 0) && suffix.iter().all(|&x| x == 0);
if !is_zeros {
break;
}
}
}