for (uint32_t i = 0; i < blob_size; i++)
{
dst[i] = src[i * mix_primes % blob_size];
}
/*
设混淆的质数为prime
假设索引i,j(i < j < blob_size < prime)对应对一同索引k,则可推到出
i * prime = blob_size * x + k
j * prime = blob_size * y + k
其中,x和y分别为除数,(x < y < prime)
两式相减得:
(j - i) * prime = (y - x) * blob_size
因为任意一个数都可以拆分成多个质数相乘,但是
由于y-x和blob_size都小于prime,所以假设其拆分的质数为q1,q2...
不可能组合成prime,所以上式不成立,即不存在索引i,j对应同一个索引k
*/
/*
连续三个数相加大于0,连续五个数相加小于0,最多能包含几个数?5个数
a1 + a2 + a3 > 0
a2 + a3 + a4 > 0
a3 + a4 + a5 > 0
a1 + a2 + a3 + a4 + a5 < 0
a4 + a5 < 0 => a3 > 0
a1 + a5 < 0 =>
a1 + a2 < 0 => a3 > 0
-1 -1 3 -1 -1满足要求
a1 + a2 + a3 > 0
a2 + a3 + a4 > 0
a3 + a4 + a5 > 0
a4 + a5 + a6 > 0
a1 + a2 + a3 + a4 + a5 < 0
a2 + a3 + a4 + a5 + a6 < 0
a4 + a5 < 0 => a3 > 0 a2 > 0
a1 + a2 < 0
a2 + a3 < 0 => a1 > 0 a4 > 0
所以a1 + a2 > 0和a1 + a2 < 0矛盾
*/