Блочный алгоритм шифрования TEA

b0nzo:  4 Февраля 2010 19:59:37

Нужно реализовать блочный алгоритм шифрования TEA. В кратце - есть input файл, и 128-bit файл-ключ(создать самому). Нужно брать из input-файла блоки по 64 бита. Далее делить их на 2 части по 32 бита, и потом по известному мне алгоритму шифровать, используя ключ. 

Вопрос : как читать из файла блоки по 64 бита? И далее работать с ними. Я в курсе что 64 бит = 8 байт

Буду работать с unsigned int или long. Они 4-х байтовые, мне как раз это и нужно. Вот как считать эти 64 бита?

Язык разработки : С++

Компилятор : Borland C++ 5.02

  • Digg it!
  • Delicious
  • +МоёМесто.ru
  • Добавить страницу к Мистеру Вонгу
  • Добавить страницу к Мистеру Вонгу

Ответы ОТВЕТЫ (4)

 5 Февраля 2010 19:49:04  #

Хм. Кто сказал, что unsigned int или long всегда 4 байта? На моей системе unsigned int 4 байта, а long - 8 байт (gcc version 4.4.2, x86_64). Можно просто читать данные из потока в переменную типа unsigned int, но тут есть нюанс. Этот код будет зависеть от архитектуры (little endian/big endian). Полагаю правильно будет сделать char буффер размером 8 байт и читать в него. Читать можно методом istream& read(char*, int); Нужно обратить внимание на случай, если длинна файла не кратна 8. В этом случае последний блок будет меньше буфера (оставшиеся данные возможно нужно будет занулить).

 6 Февраля 2010 21:23:35  #

Спасибо. Попробую так. Если что - отпишусь о результате. И это.... конечно глупый вопрос, но чар буффер размером 8 байт, это что то вроде malloc-oм выделить чар переменной 8 байт? А то я не понял что то)

 7 Февраля 2010 17:29:35  #

Malloc, кажется, перебор. Размер буфера известен заранее, можно просто сделать обычную авто переменную типа char buffer[8];  Будет ровно 8 байт (могу немного ошибаться в синтаксисе, давно на C/C++ не писал).

 7 Февраля 2010 22:09:27  #

Хмм.. char ведь однобайтовый... точно.. Спасибо, буду пробовать)

Отвечать на вопросы могут только зарегистрированные пользователи

Отличный повод быстро Зарегистрироваться или выполнить Вход