Files
2026-08-27 10:55:23 -06:00

51 lines
967 B
C#

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;
}
}