Шифрование/Дешифрование

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by SwirlStick, 28 May 2011.

  1. SwirlStick

    SwirlStick Banned

    Joined:
    25 May 2011
    Messages:
    9
    Likes Received:
    16
    Reputations:
    20
    Хай все
    Допустим, я шифрую данные в файл по системе enc(x) = y;
    т.е. получается, что "y" пишется в файл.
    Допустим, что для x1,x2,x3 соотвественно y1,y2,y3 будут 3,5,93431 (т.е. "y" может быть очень большим).
    Следовательно, в файл попадёт
    3593431. У меня вопрос, как при расшифровке мне понять, где оканчивается одно означение "y" и начинается другое?

    Примечание: Пример написан в 10тичной форме для простоты понимания, так как я опасаюсь, что и без этого не могу сформулировать свои мысли понятным языком :(
     
    #1 SwirlStick, 28 May 2011
    Last edited: 28 May 2011
    1 person likes this.
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    как вариант перед каждым блоком его размер сделать.
    Если получил ты 3,5,93431
    то в файл запишется 1315593431
    ну или использовать символ разделителя какой нить (если данные текстовые а не двоичные)
     
  3. yuran666666

    yuran666666 Member

    Joined:
    18 Jan 2009
    Messages:
    84
    Likes Received:
    19
    Reputations:
    11
    Файл состоит из байт, а не из цифр, байт имеет ограниченное и неизменное значение и вы никуда не уйдете за его границу т.к. это будет уже следующий/предыдущий байт.
    Если же ваш алгоритм шифрования всеже намерен бить данные в файле на рандомной длины блоки байт, то пост выше будет вам ответом.
     
    #3 yuran666666, 28 May 2011
    Last edited: 28 May 2011
  4. SwirlStick

    SwirlStick Banned

    Joined:
    25 May 2011
    Messages:
    9
    Likes Received:
    16
    Reputations:
    20
    Данные двоичные, поэтому идея с разделителем сразу неподходит.
    А с размером это хорошая мысль, спасибо.
    Всё же интересно, как это реализуется во взрослых программах аля pgp и так далее, может быть кто-нибудь знает?
    (Кстати, я тут подумал, наверное писать размер плэйнтекстом врядли будет способствовать криптостойкости)
    Да не может быть. Ты о чём сейчас вообще?
     
    #4 SwirlStick, 28 May 2011
    Last edited: 28 May 2011
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    в тех программах идет блочное шифрование. т.е. там блоки шифрованных и дешифрованных данных имеет одинаковый размер 64/128/256/512 бит
     
  6. yuran666666

    yuran666666 Member

    Joined:
    18 Jan 2009
    Messages:
    84
    Likes Received:
    19
    Reputations:
    11
    все об этом же- читайте книжки
     
  7. Steam[777]

    Steam[777] Elder - Старейшина

    Joined:
    27 Sep 2010
    Messages:
    295
    Likes Received:
    41
    Reputations:
    25
    Есть еще вариант определиться с длинной блока, и выравнивать его до определенного размера.
    Например, из 3,5,93431 получится 00003,00005,93431
    Этот вариант подходит,если длинна Y мала - если велика,действительно лучше записывать размер
    Плюс будет возможность обращаться адресно к данным внутри выходного файла :)