Estoy reescribiendo un sitio web PHP en ASP.NET MVC. Me gustaría mantener la misma base de usuarios pero las contraseñas son hash usando la función PHP crypt(). Necesito la misma función en .Net para poder hacer una contraseña al iniciar sesión y compararla con la contraseña hash en la base de datos del usuario.Función PHP crypt() en .Net?
cripta en este caso, está utilizando la aplicación CRYPT_MD5 - los hashes de todo comenzar con $ 1 $
He intentado Phalanger pero no tiene una implementación de la función MD5 cripta.
¿Alguien sabe de uno en .Net? El ejemplo de C# de crypt() en CodeProject usa DES, no MD5.
He intentado el siguiente código en C#, con diferentes permutaciones de salt + password, password + salt y salt con y sin $ 1 $ prefix y $ sufijo. Ninguno da mismo resultado que PHP:
static void Main(string[] args)
{
const string salt = "somesalt";
const string password = "fubar";
const string plaintextString = password + salt;
byte[] plaintext = GetBytes(plaintextString);
var md5 = MD5.Create("MD5");
byte[] hash = md5.ComputeHash(plaintext);
string s = System.Convert.ToBase64String(hash);
Console.WriteLine("Hash of " + password + " is " + s);
Console.ReadKey();
}
private static byte[] GetBytes(string s)
{
var result = new byte[s.Length];
for (int i = 0; i < s.Length; i++)
result[i] = (byte)s[i];
return result;
}
MD5 no se considera un control seguro y es posible que desee actualizar sus sistemas de SHA-256. – TravisO
btw, 'Consola.WriteLine ("Hash of {0} es {1}", contraseña, s); ' – abatishchev
Abatishchev, este fue un pico rápido para comprobar si podía generar el mismo hash que PHP para una cadena de entrada determinada. Su comentario está completamente fuera del tema y no es útil. –