Exemplo n.º 1
0
 protected int GetRandStartPos(int rand_len, xorshift128plus random)
 {
     if (rand_len > 0)
     {
         return((int)(random.next() % 8589934609 % (ulong)rand_len));
     }
     return(0);
 }
Exemplo n.º 2
0
 protected virtual int GetRandLen(int datalength, xorshift128plus random, byte[] last_hash)
 {
     if (datalength > 1440)
     {
         return(0);
     }
     random.init_from_bin(last_hash, datalength);
     if (datalength > 1300)
     {
         return((int)(random.next() % 31));
     }
     if (datalength > 900)
     {
         return((int)(random.next() % 127));
     }
     if (datalength > 400)
     {
         return((int)(random.next() % 521));
     }
     return((int)(random.next() % 1021));
 }
Exemplo n.º 3
0
        protected override int GetRandLen(int datalength, xorshift128plus random, byte[] last_hash)
        {
            if (datalength >= 1440)
            {
                return(0);
            }
            random.init_from_bin(last_hash, datalength);

            int pos       = FindPos(data_size_list, datalength + Server.overhead);
            int final_pos = pos + (int)(random.next() % (ulong)(data_size_list.Length));

            if (final_pos < data_size_list.Length)
            {
                return(data_size_list[final_pos] - datalength - Server.overhead);
            }

            pos       = FindPos(data_size_list2, datalength + Server.overhead);
            final_pos = pos + (int)(random.next() % (ulong)(data_size_list2.Length));
            if (final_pos < data_size_list2.Length)
            {
                return(data_size_list2[final_pos] - datalength - Server.overhead);
            }
            if (final_pos < pos + data_size_list2.Length - 1)
            {
                return(0);
            }
            if (datalength > 1300)
            {
                return((int)(random.next() % 31));
            }
            if (datalength > 900)
            {
                return((int)(random.next() % 127));
            }
            if (datalength > 400)
            {
                return((int)(random.next() % 521));
            }
            return((int)(random.next() % 1021));
        }
Exemplo n.º 4
0
        protected void InitDataSizeList()
        {
            xorshift128plus random = new xorshift128plus();

            random.init_from_bin(Server.key);
            int        len       = (int)(random.next() % 8 + 4);
            List <int> data_list = new List <int>();

            for (int i = 0; i < len; ++i)
            {
                data_list.Add((int)(random.next() % 2340 % 2040 % 1440));
            }
            data_list.Sort();
            data_size_list = data_list.ToArray();

            len = (int)(random.next() % 16 + 8);
            data_list.Clear();
            for (int i = 0; i < len; ++i)
            {
                data_list.Add((int)(random.next() % 2340 % 2040 % 1440));
            }
            data_list.Sort();
            data_size_list2 = data_list.ToArray();
        }
Exemplo n.º 5
0
 protected int UdpGetRandLen(xorshift128plus random, byte[] last_hash)
 {
     random.init_from_bin(last_hash);
     return((int)(random.next() % 127));
 }