namespace Intelix.Helper.Encrypted; public class RC4Crypt { public static byte[] Decrypt(byte[] key, byte[] data) { if (key == null) { return null; } if (key.Length == 0) { return null; } if (data == null) { return null; } byte[] array = new byte[256]; for (int i = 0; i < 256; i++) { array[i] = (byte)i; } int num = 0; for (int j = 0; j < 256; j++) { num = (num + array[j] + key[j % key.Length]) & 0xFF; Swap(array, j, num); } byte[] array2 = new byte[data.Length]; int num2 = 0; num = 0; for (int k = 0; k < data.Length; k++) { num2 = (num2 + 1) & 0xFF; num = (num + array[num2]) & 0xFF; Swap(array, num2, num); byte b = array[(array[num2] + array[num]) & 0xFF]; array2[k] = (byte)(data[k] ^ b); } return array2; } private static void Swap(byte[] arr, int a, int b) { byte b2 = arr[a]; arr[a] = arr[b]; arr[b] = b2; } }