2012-03-19 26 views
8

Tengo un proyecto en el que se me ha dado un hash MD5 de un número entre 1 y 2 mil millones, y tengo que escribir un programa distribuido que obtiene el número por fuerza bruta. He codificado este programa con éxito y funciona. Me preguntaba si hay una forma de acelerar la generación de hashes.C# Generación más rápida de hashes MD5

Aquí es mi función actual para generar el hash:

static string generateHash(string input) 
    { 
     MD5 md5Hasher = MD5.Create(); 
     byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); 
     StringBuilder sBuilder = new StringBuilder(); 
     for (int i = 0; i < data.Length; i++) 
     { 
      sBuilder.Append(data[i].ToString("x2")); 
     } 
     return sBuilder.ToString(); 
    } 

Gracias por cualquier ayuda

+3

Generación de ellos una vez y luego cargarlos desde un archivo es una idea obvia – Jon

+0

Crear los hashes mientras el objeto MD5 aún está definido probablemente sea útil. Definirlo, dejarlo disponer, luego volver a instanciarlo para la próxima generación es un recurso pesado. –

Respuesta

9

usted podría utilizar BitConverter.ToString

static string generateHash(string input) 
{ 
    MD5 md5Hasher = MD5.Create(); 
    byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); 
    return BitConverter.ToString(data); 
}