Мне нужна помощь в понимании порядка битов в DES для реализации C - PullRequest
1 голос
/ 11 марта 2019

Я использую множество ссылок для изучения этого алгоритма, в том числе книгу и уроки Кристофа Паара.В настоящее время я работаю над пользовательской реализацией алгоритма на 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...

Я что-то упустил?Какой порядок следования битов - порядковый номер, который я должен учитывать в этом алгоритме?

...