Краткое описание: на входе имеем
Краткое описание: на входе имеем ключ размером 16 байт, на выходе получаем массив из 256 байт, в котором равномерно и псевдослучайно распределены байты от 0 до 255, причем их распределение зависит от входного ключа:
byte t; //Временная ячейка
byte A = 0; //Здесь будем получать новый псевдослучайный индекс
byte M[256]; //Наш формируемый массив
byte Key[16]; //Исходный ключ, с помощью него будем формировать массив M
for (int i = 0; i < 256; i++)
M[i] = i; //Последовательно заполняем массив значениями от 0 до 255
for (int i = 0; i < 256; i++)
{
A += (M[i] + Key[i % 16]); //Вычисляем новый индекс для обмена байтами
t = M[i];
M[i] = M[A]; //Меняем местами i-й байт и байт по вычисленному индексу A
M[A] = t;
}
Далее по этому алгоритму байтами из массива M с помощью завершающей процедуры RC4 с применением операции XOR расшифровываются любые необходимые данные.