Necesito autenticarme contra una tabla de membresía ASP.NET en php. La API de membresía está configurada para usar una contraseña hash.Usar la membresía ASP.NET en PHP
¿Alguien puede amablemente darme el php para hash la contraseña que vino de un formulario de inicio de sesión y compararlo con el campo sql?
Sé que la contraseña que estoy ingresando es correcta, pero no es lo mismo.
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;
}
}
ACTUALIZACIÓN:
He intentado diferentes codificaciones con los mismos resultados. UTF-7, UTF-8 y UTF-16.
ACTUALIZACIÓN: He estado luchando con esto desde hace una semana. Bounty viene directamente ...
Aquí está el código .net en la forma de una prueba de unidad. La prueba de unidad funciona y los valores salen directamente de la base de datos. ¿Cuál es la traducción correcta de este código a 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);
}
¿Obtiene diferentes valores de hash? – MyStream
Sí, los valores hash no coinciden – Darthg8r
Esto podría ayudar: http://thekindofme.wordpress.com/2008/12/04/aspnet-membership-password-hashing-algorithm/ – Prescott