public static byte[] NativeDecodeToBytes(byte[] data) { if (null == data || data.Length < 1) { return(new byte[1]); } byte[] encodeKey = BakeByte(data[0]); byte[] preOr1 = new byte[data.Length - 2]; byte orderSeed = data[1]; Array.Copy(data, 2, preOr1, 0, preOr1.Length); byte[] preOr2 = FDRandom.ReOrder(preOr1, orderSeed); for (int i = 0; i < (preOr2.Length + 0.1f) / 12.0f; ++i) { for (int j = 0; j < 12 && i * 12 + j < preOr2.Length; ++j) { preOr2[i * 12 + j] = (byte)(preOr2[i * 12 + j] ^ encodeKey[j]); } } return(preOr2); }