разбивка на блоки по 16 бит
Хочу написать на C# реализацию алгоритма шифрования IDEA - готовых исходников не нашел.
В описании алгоритма сказано: "IDEA использует 128-битный ключ и 64-битный размер блока, открытый текст разбивается на блоки по 64 бит"
Не понимаю, что значит "стольки-то-битный"? Всегда имел дело только с языками высокого уровня, о битах и байтах представление слабое (только как о размере данных).
Если ввожу строковый ключ - как определить его битность? Как вообще представить строку в виде битов? Как с этим работать? А как разбить шифруемый текст на блоки по 64 бит? Какова программная реализация этого?
Буду очень благодарен за подробные ответы!
Это значит, что в нем столько-то бит. КО.
Не оправдание)
В шифровании применяется, так-то, кодировка ASCII, т.е. в одном символе 8 бит. Отсюда и считайте.
Представить строку как набор байтов. Для 32-символьной строки получится массив из 32 байтов.
Работать согласно алгоритму шифрования. У вас есть байты. Работайте с битами с помощью битовых операций (сдвиг, xor, and и т.д.)
Разбить на блоки по 8 байт.
В смысле?) Берете да пишите)
P.S.: сам писал реализацию для шифрования по ГОСТу, в целом ничего сложно, так же все разбивается на блоки, такие же ключи.
Аналогично и с шифруемым текстом - надо разбить на блоки по 64 бит - то есть по 8 символов?
Ну если написано, что ключ должен быть 128 бит, значит только 16.
Он не может быть больше или меньше, он обязательно равен 128 битам.
Ну да. Если текст не кратен 8 байтам (символам), то можете дополнить нулями или ещё какими-либо байтами (на этот случаи должны быть рекомендации к алгоритму шифрования).