Я использую множество ссылок для изучения этого алгоритма, в том числе книгу и уроки Кристофа Паара.В настоящее время я работаю над пользовательской реализацией алгоритма на C и пытаюсь реализовать функцию расширения в DES.
У меня проблемы с порядком битов,В примере, приведенном в этой ссылке , следующие данные (A) расширяются до (B):
(b<x>) --> byte <x>
(b0) (b1) (b2) (b3)
A: 0xF0 0xAA 0xF0 0xAA
(b0) (b5)
B: 0x7A 0x15 0x55 x7A 0x15 0x55
На уровне битов происходит следующее:
A: 1111 0000 1010 1010
B: 011110 100001 010101 01010-
0111 1010 0001 0101 0101...
0x7 0xA 0x1 0x5 0x5...
Теперь, если я что-то упустил, я бы сказал, что в байте 0xF0 или 0b11110000 самый левый бит (1) обрабатывается как бит 0, а самый правый бит (0),рассматривается как бит 7.
Это, однако, противоположно порядку битов, предлагаемому C. В C бит 0 является самым правым, а бит 7 - самым левым.Расширение этого байта будет выглядеть так:
0000 1111
100001 01111...
Я что-то упустил?Какой порядок следования битов - порядковый номер, который я должен учитывать в этом алгоритме?