fn worker(prefix: &str, iter: ParIter<'_, usize>) -> Vec<(usize, [u8; 128])>
Each worker thread chooses the next available index then computes the hash and patches the final vec with the result.