Вопрос заклюается не в выборе метода генерации хеша, а именно преобразование этого кода из Делфи в Пхп.
что именно не получаецо? помочь - одно, сделоть за вас - совсем другое. п.с. ник соответствует содержанию?
2FrMn, а не поучается то что я паскалем 4 года назад пользавался. 2. ты хочешь сказать что-то за мой ник или за меня?
<? 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); ?> Не получается.
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( (5 * $temp1) % 29 - ord($last_char) % 7 + 93) + $last_char + chr(0x68); break; case 0x32:case 0x35: $temp1 = $current_char; if ($current_char % 3 != 1) $temp1 = ord('9'); $cipher1 .= $cipher1 + chr($current_char - $temp1 + 18); break; default: $cipher1 .= $cipher1 + chr($current_char); } } echo $cipher1; ?>