Большинство реализаций DES принимают аргумент 64-битного ключа.
Каждый байт этого ключа содержит один бит четности, который отбрасывается перед выполнением кодирования / декодирования, оставляя длину ключа в 56 битах.
Эти байты четности служат для метода обнаружения ошибок.
Нечетное соотношение: https://en.m.wikipedia.org/wiki/Parity_bit
Ключи DES содержат нечетный бит четности в 8-м индексе (последнем бите) каждого байта.
Этот последний бит гарантирует, что количество битов «1» в байте является нечетным.
Это будет «1», если предыдущие 7 битов содержат четное количество «1» битов.
Будет 0, если предыдущие 7 бит содержат нечетное количество бит 1.
Метод преобразования 7-байтового символьного ключа в 8-байтовый двоичный ключ (поскольку преобразование может сделать некоторые байты непечатаемыми символами) заключается в преобразовании 7-байтового символьного ключа в двоичный и вставке в общей сложности 8 байты четности в индексе 8,16,24,32,40,48,56,64.
Это обеспечит вас 8-байтовым (64-битным) ключом, который получен из 7-байтового (56-битного) ключа для целей кодирования / декодирования с помощью DES.
Источники:
Википедия: https://en.m.wikipedia.org/wiki/Data_Encryption_Standard
«Ключ якобы состоит из 64 битов; однако только 56 из них фактически используются алгоритмом. Восемь битов используются исключительно для проверки четности и после этого отбрасываются. Следовательно, эффективная длина ключа составляет 56 битов ».
«Ключ номинально хранится или передается в виде 8 байтов, каждый с нечетной четностью. Согласно ANSI X3.92-1981 (в настоящее время известный как ANSI INCITS 92-1981), раздел 3.5:
Один бит в каждом 8-битном байте KEY может использоваться для обнаружения ошибок при генерации, распространении и хранении ключей. Биты 8, 16, ..., 64 предназначены для обеспечения того, чтобы каждый байт имел нечетную четность. ”