Шифрую 32 байта в cryptool (ключ 128 бит), на выходе получаю 48 байт (см. рисунок), пробую в другой программе (Xtort © Omziff) получаю 64 байта, но мне кажется, что я должен получить на выходе 32 байта, т.е. равно длине входных данных, кратно 16-ти байтам (размер блока в twofish - 128 бит), как правильно то?
Понял, получается длина увеличивается на размер ключа, в Omziff используется 256 бит, потому там получил 64 байта
Таки я не понял, взял третью прогу frhed , там длина зашифрованных данных не изменяется, и при 128\256 бит остается равна входным 32 байтам (plaintext'а), шо за рыба ... p.s. тему следует читать как twofish [sizeof.encrypted] , хотя какая х.р.?
кусок исходника CrypToolа... "лишний" блок появляется из-за этого: Код (Text): borg[datalen++]=1; for(; datalen %16; datalen++) borg[datalen]=0; что касается Omziff, то м.б. там такой же паддинг + запись IV в начало потока... _1675914233__AESEncryption.zip
Спасиб, получается CrypTool правильно зашифровал только первые 16 байт та ещё и добавил лишних 16. Проверил ещё несколько утилит, только две шифруют как надо, но они не умеют принимать ключ в binary-формате(только текст) ну то уже мелочи
смотря что ты понимаешь под "правильно" паддинг он использует для того, чтобы корректно расшифровать сообщение (без мусора в конце). поэтому ИМХО КрипТул-то как раз все правильно сделал
Ах вот оно что, я не слыхал о паддинге ... ещё и подумал, интересно зачем ты "лишний" взял в кавычки Тут у меня прога(ковыряю), она зашифровывает twofish'ем, а я захотел проверить, правильно ли я восстановил её алгоритм, и блин не сошлось с cryptool (она возвращает 32 байта)
твоя прога может использовать twofish в другом режиме или с другим IV. в таких случаях лучше найди преобразование _одного_ блока (т.е. основную ф-цию алгоритма) и ставь туда бряк и смотри какие данные её на вход идут. CrypTool'а для таких вещей часто недостаточно -- нужно будет самому немного поработать
Точно, так и есть! Нашел этот IV вектор, проверил в FineCrypt(там можно выбрать режим и задать вектор) и определил CBC, все совпало з.ы. ну и хитрый этот алгоритм (слишком много кода и махинаций для ковыряния)