protected int GetRandStartPos(int rand_len, xorshift128plus random) { if (rand_len > 0) { return((int)(random.next() % 8589934609 % (ulong)rand_len)); } return(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)); }
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(); }
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)); }
protected int UdpGetRandLen(xorshift128plus random, byte[] last_hash) { random.init_from_bin(last_hash); return((int)(random.next() % 127)); }