Split data to diffused data, using a random generator and an hash
algorithm.
the diffused data will consist of random data for (expandTimes-1) then
the last block will be xor of the accumulated random data diffused by
the hash algorithm.
- ---------
- orig -
- ---------
- --------- ---------- --------------
- rand1 - - rand2 - - orig ^ acc -
- --------- ---------- --------------
where acc is : acc(n+1) = hash (n ++ rand(n)) ^ acc(n)