Serpent IP Начальная перестановка
Пожалуйста, подскажите правильно ли я понимаю таблицу начальной перестановки IP в шифровании Serpent. Т.к. она используется при получение раундовых ключей, а каждый ключ K0={w0,w1,w2,w3}
w0 размер 32 байта, но таблица IP имеет 128 значений, значит, нужно склеить 4 ключа, чтобы получить 128-битный ключ. Далее каждый бит 128-битного ключа переходит на соответствующую ячейку. Например, K0={0xBBBBBBBB,0xBBBBBBBB,0xBBBBBBBB,0xBBBBBBBB}
переведем все в bin
10111011101110111011101110111011,10111011101110111011101110111011,10111011101110111011101110111011,10111011101110111011101110111011
Первые 5 значений в IP это 0, 32, 64, 96, 1, значит нулевой бит перейдет на нулевую позицию, 32 бит - на первую, 64 - на вторую, 96 - на третью, 1 бит - на четвертую.
Значит: 11110 и так далее. Иными словами, просто берем позицию согласно таблице IP в склеенной 128 битной строке и перенесем на новую позицию. Во всяком случае так происходит в DES. Но все же в Serpent, по-моему, IP/Inv IP работает не так.