Pregunta

La pregunta se explica por sí misma. Busqué en Google muchos sitios, muchos métodos, probé muchas codificaciones, pero no consigo que coincida.

Estoy tratando de hacer que la cadena " asdasd " partido. ( http://www.fileformat.info/tool/hash.htm?text= asdasd )

¿Fue útil?

Solución

Prueba esto

using System.Security.Cryptography

public static string HashPassword(string unhashedPassword)
{
    return BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(unhashedPassword))).Replace("-", String.Empty).ToUpper();
}

Otros consejos

BitConverter funciona bien ...

var testVal = "asdasd";
var enc = new ASCIIEncoding();
var bytes = enc.GetBytes( testVal );

var sha = new SHA512Managed();
var result = sha.ComputeHash( bytes );

var resStr = BitConverter.ToString( result );
var nodash = resStr.Replace( "-", "" );

nodash.Dump();

(Corregido para hash de 512 bits, lo siento :)

Acabo de pasar varias horas tratando de obtener una función hash .NET para que coincida con la función Crypt de PHP. No es divertido.

Aquí hay múltiples desafíos, ya que la implementación PHP de Crypt devuelve una cadena codificada en base64 y no realiza múltiples iteraciones de hash (por ejemplo, 5000 es el valor predeterminado para Crypt). No pude obtener resultados similares de .NET usando varias bibliotecas, hasta que encontré CryptSharp. Acepta una sal similar a la función de PHP (o la C original) (por ejemplo, " $ 6 $ round = 5000 $ mysalt " ). Tenga en cuenta que no hay un $ final, y que si no proporciona una sal, se generará automáticamente al azar.

Puedes encontrar CryptSharp aquí: http://www.zer7.com/software.php?page=cryptsharp

Buena lectura de fondo: - http://www.akkadia.org/drepper/SHA-crypt.txt

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top