2012-02-01 2 views
0

Я реализую примитивный блочный шифр. Однако реализация такова, что размер зашифрованного текста может отличаться от размера открытого текста. Мне нужно знать, как я могу вычислить размер зашифрованного текста, который формируется после кодирования. strlen (char *) не будет работать, поскольку зашифрованный текст может содержать несколько символов «\ n». Существует ли какая-либо проблема вокруг этой проблемы?определение размера битового блока в c

+1

У strlen нет проблем со встроенным «\ n». Вы имеете в виду встроенные символы '\ 0'? –

+1

Я не понимаю - если вы используете шифр, как вы можете не знать, насколько большой выходной блок? Если вы имеете в виду «как я могу разобрать блоки при декодировании», вам придется реализовать некоторый протокол для обертывания блоков. –

ответ

2

Ваша функция кодирования должна возвращать размер, это единственная сущность, которая ее знает. Реализация отдельной функции для «определения размера» означает повторное выполнение половины алгоритма.

Так что если в вашей функции кодирования у вас есть что-то вроде этого:

while (...) 
    buf[i++] = stuff; 

Вы должны вернуться i.

+0

Один и очень хороший ответ ... – Bart

Смежные вопросы