Шифрование

Тема в разделе "PHP Pro", создана пользователем CrashX, 28 мар 2011.

Статус темы:
Закрыта.
  1. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    Нужен быстрый метод шифрования


    может есть алгоритм более быстрый, без использования доп библиотек php типа mycrypt
    имеющиеся
    этот хорош, но более долгий, RC4 быстрее почти в 2 раза
    PHP:
    /**
     * Класс шифрования данных
     */
    class Encryption {


      var 
    $key 'SUPER_KEY';


      function 
    encrypt($string) {
        
    $result null;
        for (
    $i 0$i strlen($string); $i++):
          
    $char substr($string$i1);
          
    $keychar substr($this->key, ($i strlen($this->key)) - 11);
          
    $char chr(ord($char) + ord($keychar));
          
    $result.=$char;
        endfor;
        return 
    base64_encode($result);
      }

      function 
    decrypt($string) {
        
    $result null;
        
    $string base64_decode($string);
        for (
    $i 0$i strlen($string); $i++):
          
    $char substr($string$i1);
          
    $keychar substr($this->key, ($i strlen($this->key)) - 11);
          
    $char chr(ord($char) - ord($keychar));
          
    $result.=$char;
        endfor;
        return 
    $result;

      }
    }
    RC4, хорош, но недостаточно быстр

    PHP:
    /**
     * Класс реализующий алгоритм шифрования RC4
     * @see http://ru.wikipedia.org/wiki/RC4
     */
    class RC4 {

      private 
    $S = array();


      private function 
    swap(&$v1, &$v2) {
        
    $v1 $v1 $v2;
        
    $v2 $v1 $v2;
        
    $v1 $v1 $v2;
      }


      private function 
    KSA($key) {
        
    $idx crc32($key);
        if (!isset(
    $this->S[$idx])) {
          
    $S range(0255);
          
    $j 0;
          
    $n strlen($key);
          for (
    $i 0$i 255$i++) {
            
    $char ord($key{$i $n});
            
    $j = ($j $S[$i] + $char) % 256;
            
    $this->swap($S[$i], $S[$j]);
          }
          
    $this->S[$idx] = $S;
        }
        return 
    $this->S[$idx];
      }

     
      public function 
    encryptRC4($data$key) {
        
    $S $this->KSA($key);
        
    $n strlen($data);
        
    $i $j 0;
        
    $data str_split($data1);
        for (
    $m 0$m $n$m++) {
          
    $i = ($i 1) % 256;
          
    $j = ($j $S[$i]) % 256;
          
    $this->swap($S[$i], $S[$j]);
          
    $char ord($data{$m});
          
    $char $S[($S[$i] + $S[$j]) % 256] ^ $char;
          
    $data[$m] = chr($char);
        }
        
    $data implode(''$data);
        return 
    $data;
      }


      public function 
    decryptRC4($data$key) {
        return 
    $this->encryptRC4($data$key);
      }

    }
     
  2. LEE_ROY

    LEE_ROY

    Регистр.:
    26 янв 2007
    Сообщения:
    205
    Симпатии:
    20
    кеш юзают для ускорения работы сайта путем минимизация запросов в базу и вычисления вских значений. если кеш шифровать то смысл всего оптамайза теряется в миг. сначала поясни зачем его шифровать ибо этот подход неверный.
     
  3. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    шифруется не просто кеш, а выгружаемые и загрушаемые данные
    до шифрования кеш утаскивали, преодически, он имеет формат xml

    так же на сервере шифруются некоторые данные в таблицах,части шифрованых таблиц имеются и в кеш-sql, фаилах, которые так же должны быть защифрованы.
     
  4. LEE_ROY

    LEE_ROY

    Регистр.:
    26 янв 2007
    Сообщения:
    205
    Симпатии:
    20
    все равно непонятно, от кого шифруются данные? кто к ним имеет доступ и через что? через веб или фтп? как их стягивают? нужно отталкиваться от задачи.
     
  5. CAPAXA

    CAPAXA

    Регистр.:
    7 июн 2007
    Сообщения:
    903
    Симпатии:
    540
    А банально закрыть доступ в папке кеша?
     
  6. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    есть данные которые забирают клиенты они лежат в папке
    update/***/last.xml
    update/***/base.xml

    эти данные они стягивают они, доступ по определенному запросу, но у меня софт стоит $ точнее месяц аренды, некоторые умники нашил как получать обновы. теперь ввел шифрование.


    тема не том как и что у меня работает а о то алгоритмах шифрования более быстрые чем я привел.
    обязательно он должен быть ввиде кода тк BlowFish в модуле MyCrypt не расшифровывается в Делфях...
    поэтому нужен исходник что бы я мог аналогичный сделать на другом языке програмирования
     
  7. LEE_ROY

    LEE_ROY

    Регистр.:
    26 янв 2007
    Сообщения:
    205
    Симпатии:
    20
    пойми, у тебя слишком много условий о которых знаешь только ты и ты неправильно ставишь акценты в шифровании, если важна сохранность инфы то скорость идет лесом, если скорость важнее то бери любой алго что есть под рукой ибо они все декриптятся одинаково быстро так же как и шифруют. И кешировать можно на веб сервере а можно на клиенте, неясно где нужна скорость на клиенте при дешифровке или на сервере при шифровке и неясно один раз инфа декриптится или постоянно.. клиент на делфи, стронние библиотеки на сервак и на клиент итд. и тп. вообщем экстрасенсы в отпуске ты уж извини.
     
  8. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    опять 25, забудь про то что шифруется и как используется! важно только то что нужно изначально!
    мне нужны
    ----
    важны СЕЙЧАС 3 фактора

    про нажедность ненадо рассказывать, криптостойкий это БлоуФиш он 1 из самых криптостойких алгоритмов...

    но сейчас, сойдет даже XOR но без повторяющейся дельты

    главное скорость работы остальное пока лесом усложнить алгоритм я и сам смогу...
     
  9. LEE_ROY

    LEE_ROY

    Регистр.:
    26 янв 2007
    Сообщения:
    205
    Симпатии:
    20
  10. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Возьми шифр Вернама. Не тот, который единственный с аналитически доказанной 100% невзламываемостью, а тот, где несколько закольцованных лент с взаимно простым периодом.

    Скорость - как у XOR, потоковый, ахуенно стойкий, ключ, правда, подлиннее придется взять, но для ключа можешь заюзать любой padding - из того же Эль-Гамаля, например. Т.к. паддинг вычисляется один раз - на общую скорость это практически не повлияет.
     
Статус темы:
Закрыта.