Блочный алгоритм шифрования TEA
Нужно реализовать блочный алгоритм шифрования TEA. В кратце - есть input файл, и 128-bit файл-ключ(создать самому). Нужно брать из input-файла блоки по 64 бита. Далее делить их на 2 части по 32 бита, и потом по известному мне алгоритму шифровать, используя ключ.
Вопрос : как читать из файла блоки по 64 бита? И далее работать с ними. Я в курсе что 64 бит = 8 байт
Буду работать с unsigned int или long. Они 4-х байтовые, мне как раз это и нужно. Вот как считать эти 64 бита?
Язык разработки : С++
Компилятор : Borland C++ 5.02
ОТВЕТЫ (4)
Спасибо. Попробую так. Если что - отпишусь о результате. И это.... конечно глупый вопрос, но чар буффер размером 8 байт, это что то вроде malloc-oм выделить чар переменной 8 байт? А то я не понял что то)
Malloc, кажется, перебор. Размер буфера известен заранее, можно просто сделать обычную авто переменную типа char buffer[8]; Будет ровно 8 байт (могу немного ошибаться в синтаксисе, давно на C/C++ не писал).
Хмм.. char ведь однобайтовый... точно.. Спасибо, буду пробовать)


Не менее интересно
Хм. Кто сказал, что 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. В этом случае последний блок будет меньше буфера (оставшиеся данные возможно нужно будет занулить).