PDA

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


zahirmen
24.09.2008, 20:31
Профи, помогите преобразовать данную функцию из делфи в пхп.Буду весьма признателен.

nerezus
24.09.2008, 21:07
А почему бы не использовать стандартный метод для генерации хэша?

zahirmen
24.09.2008, 21:33
Вопрос заклюается не в выборе метода генерации хеша, а именно преобразование этого кода из Делфи в Пхп.

FrMn
24.09.2008, 22:09
что именно не получаецо? помочь - одно, сделоть за вас - совсем другое.

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

zahirmen
24.09.2008, 22:30
2FrMn, а не поучается то что я паскалем 4 года назад пользавался.
2. ты хочешь сказать что-то за мой ник или за меня?

zahirmen
24.09.2008, 22:41
<?
$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);
?>
Не получается.

FrMn
24.09.2008, 23:45
<?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;
?>

zahirmen
24.09.2008, 23:58
2FrMn, спасибо, но где-то ошибка $cipher1 получается другой нежели в делфи