Чи не будуть втрачені дані при зіставленні 6-бітових значень на 4-бітні значення в S-коробках DES? Якщо так, то як ми можемо повернути його, щоб з’явився правильний вихід?
Чи не будуть втрачені дані при зіставленні 6-бітових значень на 4-бітні значення в S-коробках DES? Якщо так, то як ми можемо повернути його, щоб з’явився правильний вихід?
Відповіді:
DES - шифр на базі Feistel . У таких шифрах функція не повинна бути зворотною. Ось причина:
У кожному раунді застосовується така операція:
Для
Розшифровка виконується наступним чином:
Не вникаючи в усі математичні мамбо-джамбо про Фейстеля (якого я ще не на 100% розумію), якщо ви подивитесь на це зображення з Вікіпедії:
Ви можете бачити, що хоча 8 s-боків справді стискають 48 біт до 32, лише 32 біти ентропії надходять з простого тексту , тому ви можете отримати інші 16 біт від ключа при розшифровці, що є магією, яку виконує попередні згадані функції Фейстеля.