mkpwd как повторить на PHP?

Тема в разделе "PHP", создана пользователем picasik, 25 май 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    Одна софтина шифрует пароли. Нужно сделать полный аналог шифрования на PHP. Голову уже сломал, но немогу повторить.

    К примеру:
    mkpwd: [nullerws] -> [MYONGUWX]
    mkpwd: [nulled] -> [MYONGG]
    mkpwd: [nulledws] -> [MYONGGYX]

    Может кто-то знаком с алгоритмом этого шифрования.
    Зарание спасибо за любую помощь!

    ПыСы сама софтина в аттаче
     

    Вложения:

    • MKPWD.zip
      Размер файла:
      4,3 КБ
      Просмотров:
      12
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    ты сам посмотри и врубись) тут невооруженным глазом видно что кол-во символов оригала и шифра совпадают.

    mkpwd: [nullerws] 8 символов -> [MYONGUWX] 8 символов
    mkpwd: [nulled] 6 символов -> [MYONGG] 6 символов
    mkpwd: [nulledws] 8 символов -> [MYONGGYX] 8 символов

    скрипт заменяет каждый символ и переводит в верхний регистр, вот и все.
     
  3. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    вот функция вычисления пароля и пример использования:

    PHP:
    function mkpwd($word) {
      
    $a '';
      
    $c 97;
      
    $i 26;
      while(
    $i--) $a .= chr($c++);
      
    $c 65;
      
    $i 26;
      while(
    $i--) $a .= chr($c++);
      
    $c 48;
      
    $i 10;
      while(
    $i--) $a .= chr($c++);

      
    $res $word;
      
    $delta 0;
      for(
    $i 0$i strlen($word); $i++) {
        
    $c $word[$i];
        
    $n strpos($a$c);
        if (
    $n !== false) {
          
    $newdelta $n 7;
          
    $n += $delta;
          
    $n %= strlen($a);
          if (
    $n == 0) {
            
    $n 61;
          } else {
            if ((
    $n 0) && ($n <= 26)) {
              
    $n += 25;
            } else {
              if ((
    $n 26) && ($n <= 52)) {
                
    $n -= 27;
              } else {
                
    $n--;
              }
            }
          }
          
    $res[$i] = $a[$n];
          
    $delta $newdelta;
        }
      }
      return(
    $res);
    }

    $word 'nullerws';
    $passw mkpwd($word);
    echo 
    "word=$word passw=$passw<br>";

    $word 'nulled';
    $passw mkpwd($word);
    echo 
    "word=$word passw=$passw<br>";

    $word 'nulledws';
    $passw mkpwd($word);
    echo 
    "word=$word passw=$passw<br>";
     
    picasik нравится это.
  4. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    to jik: Огромное тебе спасибо!! Выручил.
    П.С. проверил где-то на 50 паролях... совпадение 100%.
     
Статус темы:
Закрыта.