public static byte[] Encode(byte[] key, byte[] validate, byte[] data, long size)
{
byte[] numArray = new byte[size + 23];
byte[] numArray1 = new byte[23];
if (key == null || validate == null || data == null || size < 0)
{
return null;
}
int length = key.Length;
int num = validate.Length;
int num1 = (new Random()).Next();
for (int i = 0; i < numArray1.Length; i++)
{
num1 = num1 * 214013 + 2531011;
numArray1[i] = (byte)((num1 ^ key[i % length] ^ validate[i % num]) % 256);
}
numArray1[0] = 235;
numArray1[1] = 0;
numArray1[2] = 0;
numArray1[8] = 228;
for (long j = size - 1; j >= 0; j = j - 1)
{
numArray[numArray1.Length + j] = data[j];
}
Array.Copy(numArray1, numArray, numArray1.Length);
size = size + numArray1.Length;
byte[] numArray2 = Two(key, validate, numArray, size, null);
byte[] numArray3 = new byte[numArray2.Length + numArray1.Length];
Array.Copy(numArray1, 0, numArray3, 0, numArray1.Length);
Array.Copy(numArray2, 0, numArray3, numArray1.Length, numArray2.Length);
return numArray3;
}