Шифрование

Статус
В этой теме нельзя размещать новые ответы.

CrashX

В прошлом XSiteCMS
Регистрация
6 Июн 2008
Сообщения
682
Реакции
114
Нужен быстрый метод шифрования


может есть алгоритм более быстрый, без использования доп библиотек 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, $i, 1);
      $keychar = substr($this->key, ($i % strlen($this->key)) - 1, 1);
      $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, $i, 1);
      $keychar = substr($this->key, ($i % strlen($this->key)) - 1, 1);
      $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(0, 255);
      $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($data, 1);
    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);
  }

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

так же на сервере шифруются некоторые данные в таблицах,части шифрованых таблиц имеются и в кеш-sql, фаилах, которые так же должны быть защифрованы.
 
все равно непонятно, от кого шифруются данные? кто к ним имеет доступ и через что? через веб или фтп? как их стягивают? нужно отталкиваться от задачи.
 
А банально закрыть доступ в папке кеша?
 
есть данные которые забирают клиенты они лежат в папке
update/***/last.xml
update/***/base.xml

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


тема не том как и что у меня работает а о то алгоритмах шифрования более быстрые чем я привел.
обязательно он должен быть ввиде кода тк BlowFish в модуле MyCrypt не расшифровывается в Делфях...
поэтому нужен исходник что бы я мог аналогичный сделать на другом языке програмирования
 
пойми, у тебя слишком много условий о которых знаешь только ты и ты неправильно ставишь акценты в шифровании, если важна сохранность инфы то скорость идет лесом, если скорость важнее то бери любой алго что есть под рукой ибо они все декриптятся одинаково быстро так же как и шифруют. И кешировать можно на веб сервере а можно на клиенте, неясно где нужна скорость на клиенте при дешифровке или на сервере при шифровке и неясно один раз инфа декриптится или постоянно.. клиент на делфи, стронние библиотеки на сервак и на клиент итд. и тп. вообщем экстрасенсы в отпуске ты уж извини.
 
опять 25, забудь про то что шифруется и как используется! важно только то что нужно изначально!
мне нужны
1-алгоритмы которые не используют библиотеки, те исходники, типа того что я написал выше.
2-важна скорость
3-возможность задания символьного (не числового) ключа
----
важны СЕЙЧАС 3 фактора

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

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

главное скорость работы остальное пока лесом усложнить алгоритм я и сам смогу...
 
но сейчас, сойдет даже XOR но без повторяющейся дельты
главное скорость работы остальное пока лесом усложнить алгоритм я и сам смогу...

Возьми шифр Вернама. Не тот, который единственный с аналитически доказанной 100% невзламываемостью, а тот, где несколько закольцованных лент с взаимно простым периодом.

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