Криптография - статьи

       

Краткое описание: на входе имеем


Краткое описание: на входе имеем ключ размером 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 расшифровываются любые необходимые данные.


Содержание раздела