Можно, например, так:<div><br></div><div>my $private_key = 'qwertyuiop';</div>for my $file (@files) {<br><div>    my $key = hash($file);</div><div>    my $encrypted = crypt($key, $file);</div><div>    my $remote = hash($encrypted);</div>
<div>    $index{$remote} = $key;</div>    upload($remote, $encrypted);<div>}<br><div>upload("$username.index", crypt($private_key, serialize(\%index)));<br><br>Т.е. ключ для каждого $file - хеш его содержимого. Если имеешь хеш, то имеешь и содержимое, приблизительно как у P2P. При этом каждый пользователь хранит там же словарь-список своих файлов, зашифрованный личным ключем.</div>
<div>Таким образом, даже если кто-то завладеет шифром от одного файла, не сумеет установить принадлежность тому или иному пользователю (разве что по IP, но это другой разговор).<br><br>вторник, 10 июня 2014 г. пользователь Анатолий Гришаев <<a href="mailto:0body0@rambler.ru">0body0@rambler.ru</a>> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div>Получается нужно два ключа: один для
      передачи по сети, а второй для хранения и дедупликации.<br>
      Минуса этого дела два:<br>
      1) Нужно шифровать и дешифровать на сервере --- лишняя нагрузка на
      процессор<br>
      2) В случае взлома сервера возможно поиметь весь контент всех
      пользователей.<br>
      <br>
      Или недалеко с шифрованным файлом хранить его ключ. Тогда при
      получении файла дешифруем его считаем хэш и решаем дубль или нет.<br>
      <br>
       <br>
      08.06.2014 15:40, Alexander Lourier пишет:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">1. А хранить тогда файл, зашифрованный чьим ключом?
        <div>2. Что будет, если клиент соврёт, что он прислал
          зашифрованный файл с контентом A, а на самом деле - там
          контент B? Сервер потом попытается дедуплицировать данные
          другого пользователя, который пытается сохранить контент A, а
          сервер уже имеет такой файл (как он думает), и не сохранит
          его. Потом второй пользователь запросит свой файл обратно, и
          получит B.</div>
        <div><br>
        </div>
        <div>По поводу п. 2 можно подумать в сторону алгоритмов
          доказательства с нулевым разглашением. Клиент, сохраняя файл,
          должен доказать, что зашифрованный файл, который он присылает,
          имеет указанную контрольную сумму. Не уверен, что даже если
          это получится, будет хоть сколь-либо быстро работать.</div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">8 июня 2014 г., 13:07 пользователь
          Walery Studennikov <span dir="ltr"><<a href="javascript:_e(%7B%7D,'cvml','despairr@gmail.com');" target="_blank">despairr@gmail.com</a>></span> написал:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <p dir="ltr">Считать хеш на клиенте, перед отправкой
              шифрованного контента, пока он ещё не зашифрован.</p>
            <br>
            --<br>
            Moscow.pm mailing list<br>
            <a href="javascript:_e(%7B%7D,'cvml','moscow-pm@pm.org');" target="_blank">moscow-pm@pm.org</a>
            | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
    </blockquote>
    <br>
  </div>

</blockquote></div></div>