The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Аналог result Xor BitConverter.ToInt32(chars, i) на php"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Аналог result Xor BitConverter.ToInt32(chars, i) на php"  
Сообщение от Akmal email(??) on 29-Ноя-08, 11:54 
Есть функция на VB.NET. Как конвертировать эту функцию на php?

Private Function CalcHash(ByVal stringToHash As String) As String
        ' get character codes into an array
        Dim chars As Byte() = Encoding.ASCII.GetBytes(stringToHash)
        Dim result As Integer = 0
        'step along the string in chunks of bytes
        For i As Integer = 0 To chars.Length - 1 Step 4
            ' get 4 bytes as an int and xor into the result
            result = result Xor BitConverter.ToInt32(chars, i)
        Next
        ' get the negative result, no idea where the extra -1 comes from
        result = -result - 1
        ' make sure that the resulting string is always 8 hex digits
        Return result.ToString("x8")
    End Function

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Аналог result Xor BitConverter.ToInt32(chars, i) на php"  
Сообщение от Square (ok) on 29-Ноя-08, 13:06 
>Есть функция на VB.NET. Как конвертировать эту функцию на php?

путем осмысления того что она делает и написания оригинального кода.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Аналог result Xor BitConverter.ToInt32(chars, i) на php"  
Сообщение от angra (ok) on 29-Ноя-08, 13:35 
После осмысления писать точный аналог не захочется ибо автор оригинала не подумал про строки длины не кратной 4. А судя по комментариям про -1 он вообще не понимал что делает.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Аналог result Xor BitConverter.ToInt32(chars, i) на php"  
Сообщение от Akmal email(??) on 29-Ноя-08, 14:12 
>[оверквотинг удален]
>result = result Xor BitConverter.ToInt32(chars, i)
>        Next
>        ' get the negative
>result, no idea where the extra -1 comes from
>        result = -result -
>1
>        ' make sure that
>the resulting string is always 8 hex digits
>        Return result.ToString("x8")
>    End Function

Вот результат:


function calc_hash($chars){
    $result=0;
    for ($i=0;$i<strlen($chars);$i+=4){
        $dummy=0;
        for ($j=3;$j>=0;$j--){
            $temp_char=substr($chars,$i+3-$j,1);
            $temp=ord($temp_char);
            $temp=$temp << (8*$j);
            $dummy+=$temp;
        }
        if($i==0){
            $result=$dummy;
        }else{
            $result=$result ^ $dummy;
        }
        $result=dechex(-$result-1);
    }
    return strtoupper($result);
}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру