Использование членства ASP.NET в PHP

Мне нужно пройти аутентификацию по таблице членства ASP.NET в php. API членства настроен на использование хешированного пароля.

Может ли кто-нибудь любезно дать мне php для хеширования пароля, полученного из формы входа, и сравнения его с полем sql?

Я знаю, что пароль, который я передаю, правильный, но он не хеширует тот же самый .

private function Auth( $username, $password )
{
    // Hashed password in db
    $hash = $this->parent->_memberData['conv_password'];

    // password passed from form
    $bytes = mb_convert_encoding($password, 'UTF-7');       

    // Salt from db
    $salt = base64_decode($this->parent->_memberData['misc']);

    // hash password from form with salt
    $hashedpassword = base64_encode(sha1($salt . $bytes, true));

    // Test em out
    if ($hashedpassword == $hash)
    {
        $this->return_code = "SUCCESS";
        return true;
    }
    else
    {
        $this->return_code = "WRONG_AUTH";
        return false;
    }
}

ОБНОВЛЕНИЕ:

Я пробовал разные кодировки с одинаковыми результатами. UTF-7, UTF-8 и UTF-16.

ОБНОВЛЕНИЕ: Я борюсь с этим уже неделю. Баунти приближается ...

Вот код .net в виде модульного теста. Модульный тест работает, и значения берутся прямо из базы данных. Как правильно перевести этот код на php?

public void EncodePassword()
        {
        string expected = "aP/mqBu3VkX+rIna42ramuosS3s=";
        string salt = "urIaGX0zd/oBRMDZjc1CKw==";
        string pass = "Comeonman";

        byte[] bytes = Encoding.Unicode.GetBytes(pass);
        byte[] numArray = Convert.FromBase64String(salt);
        byte[] numArray1 = new byte[(int)numArray.Length + (int)bytes.Length];
        byte[] numArray2 = null;
        Buffer.BlockCopy(numArray, 0, numArray1, 0, (int)numArray.Length);
        Buffer.BlockCopy(bytes, 0, numArray1, (int)numArray.Length, (int)bytes.Length);

            HashAlgorithm hashAlgorithm = HashAlgorithm.Create("SHA1");
            if (hashAlgorithm != null)
            {
                numArray2 = hashAlgorithm.ComputeHash(numArray1);
            }

        Assert.AreEqual(Convert.ToBase64String(numArray2), expected);
    }
5
задан Darthg8r 29 February 2012 в 06:09
поделиться