|
Алгоритм RC4 состоит из трех частей:
- Создание ключа (иногда называют - расширение ключа).
- Алгоритм шифрования.
- Алгоритм расшифровки.
Создание ключа.
Ключ в RC4 представляет собой последовательность байтов произвольной длинны,
по которой строится начальное состояни шифра S - перестановка всех
256 байтов.
Первоначально S заполняется последовательными значениями от
0...255. Затем каждый очередной элемент S обменивается местами с
элементом , номер которого определяется элементом ключа K, самим
элементом и суммой номеров элементов, с которыми происходил об мен на предыдущих
итерациях.
Значения счетчиков i и с изначально равны 0.
Сплошные стрелки означают передачу значений между элементами схемы (
присваивание ), двусторонние стрелки - обмен значениями, пунктирные стрелки -
индексацию в массиве.
Алгоритм шифрования.
Очередной элемент псевдослучайной перестановки S всех байтов
обменивается с другим, номер которого равен сумме элементов, выбрнных на
предыдущих шагах. В качестве очередного байта выдается значение третьего
элемента S, номер которого равен сумме первых двух. Значение
счетчика x первоначально равно 0, но оно увеличивается на 1 уже перед
первой выборкой S(x). Значение y первоначально равно 0. Но
затем высчитывается как элемент ключа по номеру x + предыдущее
значение y и вся сумма по mod 256.
Некоторые полезные свойства алгоритма RC4.
- Преобразование очередного состояния генератора (S,x,y) обратимо, так что
все возможные состояния повторяются с одинаковой частотой с некоторым
периодом.
- Поскольку S содержит каждый байт ровно один раз,
маловероятно, что одни байты будут выдаваться в качестве результата чаще, чем
другие.
Назад
|