Хай все Допустим, я шифрую данные в файл по системе enc(x) = y; т.е. получается, что "y" пишется в файл. Допустим, что для x1,x2,x3 соотвественно y1,y2,y3 будут 3,5,93431 (т.е. "y" может быть очень большим). Следовательно, в файл попадёт 3593431. У меня вопрос, как при расшифровке мне понять, где оканчивается одно означение "y" и начинается другое? Примечание: Пример написан в 10тичной форме для простоты понимания, так как я опасаюсь, что и без этого не могу сформулировать свои мысли понятным языком
как вариант перед каждым блоком его размер сделать. Если получил ты 3,5,93431 то в файл запишется 1315593431 ну или использовать символ разделителя какой нить (если данные текстовые а не двоичные)
Файл состоит из байт, а не из цифр, байт имеет ограниченное и неизменное значение и вы никуда не уйдете за его границу т.к. это будет уже следующий/предыдущий байт. Если же ваш алгоритм шифрования всеже намерен бить данные в файле на рандомной длины блоки байт, то пост выше будет вам ответом.
Данные двоичные, поэтому идея с разделителем сразу неподходит. А с размером это хорошая мысль, спасибо. Всё же интересно, как это реализуется во взрослых программах аля pgp и так далее, может быть кто-нибудь знает? (Кстати, я тут подумал, наверное писать размер плэйнтекстом врядли будет способствовать криптостойкости) Да не может быть. Ты о чём сейчас вообще?
в тех программах идет блочное шифрование. т.е. там блоки шифрованных и дешифрованных данных имеет одинаковый размер 64/128/256/512 бит
Есть еще вариант определиться с длинной блока, и выравнивать его до определенного размера. Например, из 3,5,93431 получится 00003,00005,93431 Этот вариант подходит,если длинна Y мала - если велика,действительно лучше записывать размер Плюс будет возможность обращаться адресно к данным внутри выходного файла