Профи, помогите преобразовать данную функцию

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by zahirmen, 24 Sep 2008.

  1. zahirmen

    zahirmen New Member

    Joined:
    22 Sep 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Профи, помогите преобразовать данную функцию из делфи в пхп.Буду весьма признателен.
     
    #1 zahirmen, 24 Sep 2008
    Last edited: 25 Sep 2008
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    А почему бы не использовать стандартный метод для генерации хэша?
     
  3. zahirmen

    zahirmen New Member

    Joined:
    22 Sep 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Вопрос заклюается не в выборе метода генерации хеша, а именно преобразование этого кода из Делфи в Пхп.
     
  4. FrMn

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

    Joined:
    8 Aug 2008
    Messages:
    51
    Likes Received:
    16
    Reputations:
    7
    что именно не получаецо? помочь - одно, сделоть за вас - совсем другое.

    п.с. ник соответствует содержанию?
     
  5. zahirmen

    zahirmen New Member

    Joined:
    22 Sep 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    2FrMn, а не поучается то что я паскалем 4 года назад пользавался.
    2. ты хочешь сказать что-то за мой ник или за меня?
     
  6. zahirmen

    zahirmen New Member

    Joined:
    22 Sep 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    <?
    Code:
    $MAC[0]="0";
    $MAC[1]="0";
    $MAC[2]=":";
    $MAC[3]="1";
    $MAC[4]="B";
    $MAC[5]=":";
    $MAC[6]="F";
    $MAC[7]="C";
    $MAC[8]=":";
    $MAC[9]="9";
    $MAC[10]="0";
    $MAC[11]=":";
    $MAC[12]="7";
    $MAC[13]="2";
    $MAC[14]=":";
    $MAC[15]="6";
    $MAC[16]="B";
    
    //function GenerateHash($MAC){
    
     $cipher1='';
     $last_char=$MAC[0];
    
       for ($i=1; $i<=16; $i++){
         $last_char=$MAC[$i-1];
         $current_char=ord($MAC[$i]);
         $ok=0;
    
    if ($current_char==ord("1")){
     $cipher1.=chr(($current_char+102)%15+97);
    $ok=1;
    }
    if ($current_char==ord("7")){
     $cipher1.=chr($current_char);
     $cipher1.="h";
    $ok=1;
    }
    if (($current_char==ord("0"))or($current_char==ord("4"))){
     $temp1=$current_char%19;
     $cipher1.=chr((5*$temp1)%29-ord($last_char)%7+93);  
     $cipher1.="$last_char";
     $cipher1.="h";
     
    $ok=1;
    }
    if (($current_char==ord("2"))or($current_char==ord("5"))){
     $temp1=$current_char;
      if (($current_char%3)!=1) $temp1=ord("9");
     $cipher1.=chr($current_char-$temp1+18);
     
    $ok=1;
    }
    
    if ($ok==0){
     $cipher1.=chr($current_char);
    }
       }
    echo $cipher1;
    
    //}
    //GenerateHash($MAC);
    ?>
    Не получается.
     
    #6 zahirmen, 24 Sep 2008
    Last edited: 24 Sep 2008
  7. FrMn

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

    Joined:
    8 Aug 2008
    Messages:
    51
    Likes Received:
    16
    Reputations:
    7
    PHP:
    <?php
    $MAC
    [0]="0";
    $MAC[1]="0";
    $MAC[2]=":";
    $MAC[3]="1";
    $MAC[4]="B";
    $MAC[5]=":";
    $MAC[6]="F";
    $MAC[7]="C";
    $MAC[8]=":";
    $MAC[9]="9";
    $MAC[10]="0";
    $MAC[11]=":";
    $MAC[12]="7";
    $MAC[13]="2";
    $MAC[14]=":";
    $MAC[15]="6";
    $MAC[16]="B";

    $cipher1 '';
    for (
    $i=1;$i<=16;$i++)
    {
        
    $last_char $MAC[$i-1];
        
    $current_char ord($MAC[$i]);
        switch (
    $current_char)
        {
        case 
    0x2d:$cipher1 .= chr ($current_char $i 31 18);
            break;
        case 
    0x31:$cipher1 .= chr(($current_char 102) % 15 97);
            break;
        case 
    0x37:$cipher1 .= chr($current_char) + chr(0x68);
            break;
        case 
    0x30:case 0x34:
            
    $temp1 $current_char 19;
            
    $cipher1 .= chr( ($temp1) % 29 ord($last_char) % 93) + $last_char chr(0x68);
            break;
        case 
    0x32:case 0x35:
            
    $temp1 $current_char;
            if (
    $current_char != 1$temp1 ord('9');
            
    $cipher1 .= $cipher1 chr($current_char $temp1 18);
            break;
        default:    
    $cipher1 .= $cipher1 chr($current_char);
        }
    }
    echo 
    $cipher1;
    ?>
     
  8. zahirmen

    zahirmen New Member

    Joined:
    22 Sep 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    2FrMn, спасибо, но где-то ошибка $cipher1 получается другой нежели в делфи