Jue Ago 26, 2010 9:26 am |
|
|
ricar
Perlero Nuevo
|
Registrado: Lun Jul 13, 2009 7:29 am Mensajes: 56
|
|
|
Función HASH (SHA-1) de un fichero
|
|
Hola a todos.
¿Alguien sabe cómo calcular un hash (sha-1) de un fichero? Por ejemplo, de un ejecutable del sistema (.exe).
Muchas gracias.
Un saludo, Ricar.
|
Jue Ago 26, 2010 11:18 am |
|
|
 |
explorer
Administrador
|
Registrado: Dom Jul 24, 2005 6:12 pm Ubicación: Valladolid, España Mensajes: 9492
|
|
|
Re: Función HASH (SHA-1) de un fichero
|
Con el módulo Digest::SHA1 lo resuelves fácilmente. Aquí un ejemplo, verificado por el propio comando sha1sum del sistema: Using bash Syntax Highlighting explorer@dv9210:~/Documentos/Desarrollo> perl -MDigest::SHA1 -E 'open F, "kk.pl"; $sha1 = Digest::SHA1->new; $sha1->addfile(*F); say $sha1->hexdigest'
f0fc2ec09ee4c033d849c640deb548da07c5192b
explorer@dv9210:~/Documentos/Desarrollo> sha1sum kk.pl
f0fc2ec09ee4c033d849c640deb548da07c5192b kk.pl Hay otros módulos que permiten calcular otros SHA (SHA-1, SHA-224, SHA-256, SHA-384, y SHA-512), como el Digest::SHA.
_________________ JF^D Perl programming
|
Jue Ago 26, 2010 4:44 pm |
|
|
ricar
Perlero Nuevo
|
Registrado: Lun Jul 13, 2009 7:29 am Mensajes: 56
|
|
|
Re: Función HASH (SHA-1) de un fichero
|
|
Hola explorer.
Gracias por tu respuesta. El problema es que cuando comprueba el hash resultante me sale distinto que los valores dados por otros programa (Hash Calculator y HashTab -para Windows-).
No sé porqué no me da el mismo valor.
Saludos, Ricar.
|
Jue Ago 26, 2010 4:54 pm |
|
|
 |
explorer
Administrador
|
Registrado: Dom Jul 24, 2005 6:12 pm Ubicación: Valladolid, España Mensajes: 9492
|
|
|
Re: Función HASH (SHA-1) de un fichero
|
|
No conozco esos programas, así que no puedo ayudarte mucho, salvo que, de alguna manera, tengas la seguridad de que los ficheros han sido leídos correctamente.
Por ejemplo, suele ser normal, a la hora de leer un fichero, olvidarnos que tenemos que hacerlo en binario, porque sino, los gestores de archivo de los lenguajes de ordenador traducirán de forma distinta los caracteres de final de línea (y otras conversiones más). Para eso hay que llevar un control de la longitud de lo leído.
No has publicado código, así que no puedo decirte si hay algo raro en él. Pero el ejemplo que te he mostrado, funciona muy bien.
¿Seguro que esos programas calculan el SHA1? ¿No será otro algoritmo de Has?
_________________ JF^D Perl programming
|
Jue Ago 26, 2010 5:00 pm |
|
|
ricar
Perlero Nuevo
|
Registrado: Lun Jul 13, 2009 7:29 am Mensajes: 56
|
|
|
Re: Función HASH (SHA-1) de un fichero
|
Hola explorer. Calculan sha1 entre otros. El programa es sencillito Using perl Syntax Highlighting use Digest::SHA1;
my $sha1 = Digest::SHA1->new;
open $fichero, "hashFile.txt";
$sha1->addfile($fichero);
close $fichero;
my $salida = $sha1->hexdigest;
print "Salida: $salida\n";
Usando los otros programas coinciden en el resultado que, por desgracia, es diferente en mi programita de prueba. Saludos, Ricar.
|
Jue Ago 26, 2010 5:04 pm |
|
|
ricar
Perlero Nuevo
|
Registrado: Lun Jul 13, 2009 7:29 am Mensajes: 56
|
|
|
Re: Función HASH (SHA-1) de un fichero RESUELTO
|
|
Ok, solucionado con binmode, como bien apuntabas.
Muchas gracias.
Un saludo, Ricar.
|
Jue Ago 26, 2010 5:45 pm |
|
|
 |
explorer
Administrador
|
Registrado: Dom Jul 24, 2005 6:12 pm Ubicación: Valladolid, España Mensajes: 9492
|
|
|
Re: Función HASH (SHA-1) de un fichero
|
Claro, en mi ejemplo funciona sin binmode() porque yo uso un sistema operativo de verdad. Muchas veces se me olvida que yo soy un afortunado por usar Linux, mientras que los demás se tropiezan con estas tonterías, en Windows. Los finales de línea no son transformados porque no hace falta hacerlo.  Además, ahora que lo repaso, sí que lo pone en el manual de Digest:SHA1, en la función addfile(): hay que asegurarse, en la mayoría de las ocasiones, que el fichero esté puesto en modo binario.
_________________ JF^D Perl programming
|
Sab Ago 28, 2010 11:05 am |
|
|
ricar
Perlero Nuevo
|
Registrado: Lun Jul 13, 2009 7:29 am Mensajes: 56
|
|
|
Re: Función HASH (SHA-1) de un fichero
|
Bueno, en este caso creo que el problema es más el programador que el sistema operativo  . Saludos y gracias, Ricar.
|
|
Página 1 de 1
|
[ 8 mensajes ] |
|
| Reglas del Foro |
No puedes abrir nuevos temas en este Foro No puedes responder a temas en este Foro No puedes editar tus mensajes en este Foro No puedes borrar tus mensajes en este Foro No puedes enviar adjuntos en este Foro
|
|
Socializa |
 |
|