Nvek
@Nvek
c++ чайник

Как сформировать блоки по 32бита из произвольного объема входных данных?

Из *.txt файла берется текст. Нужно для блочного шифрования, разбить блок из 64бит на два блока по 32бита.
1) как определить длину сообщения?
2) как разделить? и следовательно, как проще оперировать данными блоками?
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
1) узнать размер файла, выделить буфер под размер файла и прочитать файл оптом. Но могут быть проблемы, если файл очень большой.

2)64 бит - 8 байт
32 бит - 4 байта
Представлять можно целыми числами, например с помощью union схематично так:
#include <inttypes.h>
...
typedef union {
  uint64_t val8;
  uint32_t val4[2];
} block;
...
uint8_t * readdata; 
// Выделяем память под массив байт readdata и читаем в него 8 байт из файла (опущено)
....

block * b = (block*)readdata;
// После этого в
// b->val8 - 64 битовый блок
// b->val4[0] и b->val4[1] - два 32 битовых блока
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы