comparacion de valores

25/05/2006 - 17:03 por a_camposgarcia | Informe spam
Hola primero de todo, me explico estoy hacienun ejecutable que saca valores
de hash (Md5 y SHA-1), pero ahora me gustaria ir un poco mas alla y despues
de tener estos valores compararlos con otros valores que anteriormente he
guardado.
Ahi estan mis dudas, que codigo pudo utilizar para guardar los valores y la
otra gran duda como hago para compararlos.


Gracias de antemano.
 

Leer las respuestas

#1 Alberto Poblacion
25/05/2006 - 17:19 | Informe spam
""
@discussions.microsoft.com> wrote in message
news:
Hola primero de todo, me explico estoy hacienun ejecutable que saca
valores
de hash (Md5 y SHA-1), pero ahora me gustaria ir un poco mas alla y
despues
de tener estos valores compararlos con otros valores que anteriormente he
guardado.
Ahi estan mis dudas, que codigo pudo utilizar para guardar los valores y
la
otra gran duda como hago para compararlos.



Tanto la clase SHA1 como la MD5 que hay en System.Security.Cryptography te
devuelven el hash en un array de bytes. Asi que la pregunta se resume en
"¿cómo puedo guardar y comparar los arrays de bytes?"

Si lo quieres salvar en una base de datos (Sql Server), puedes usar un
campo de tipo BINARY, que te acepta directamente el array de bytes sin más.
Si lo quieres salvar en un archivo binario, lo único que se necesita es
abrir un FileStream contra el archivo y hacerle al Stream un Write del array
de bytes.
Si lo quieres salvar en un archivo de texto, una forma de hacerlo
escribiendo poco código consiste en usar un SoapFormatter para serializar el
array, y conectar el stream de resultado de la serialización con el fichero.

Para comparar dos arrays de bytes, aunque puede que haya alguna forma que
requiera menos código fuente, es tan sencillo y eficiente escribir un bucle
que itere por todos los bytes del array que no creo que merezca la pena
andar buscando una alternativa.

bool SonIguales(byte[] buf1, byte[] buf2)
{
if (buf1.Length!=buf2.Length) return false;
for (int i=0; i<buf1.Length; i++)
if (buf1[i]!=buf2[i]) return false;
return true;
}

Preguntas similares