2 Code originally retrieved from http://ubuntuforums.org/archive/index.php/t-337664.html
8 // GCRY_MD_CRC32 - CRC32, sencillo, rápido.
9 // GCRY_MD_SHA1 - SHA1 potente y seguro.
10 #define HASH_TYPE GCRY_MD_SHA1
11 unsigned int ihash(char *txt
);
13 int main(int argc
, char **argv
) {
14 const int block_size
=6;
15 // Comprobar la entrada de argumentos.
17 fprintf( stderr
, "Usage: %s <string>\n", argv
[0] );
23 unsigned int *int_hash
=malloc((nhashes
)*sizeof(unsigned int));
26 int_hash
[i
-1]=ihash(argv
[i
]);
29 for (i
=0;i
<nhashes
-block_size
;i
++)
31 for (b
=0;b
<block_size
;b
++)
33 printf( "%08X", int_hash
[i
+b
]);
40 unsigned int ihash(char *txt
) {
41 // Longitud del mensaje a cifrar
42 int msg_len
= strlen( txt
);
44 // Longitud del hash resultante - gcry_md_get_algo_dlen
45 // devuelve la longitud del resumen hash para un algoritmo
46 int hash_len
= gcry_md_get_algo_dlen( HASH_TYPE
);
48 // Salida del hash SHA1 - esto serán datos binarios
49 unsigned char hash
[ hash_len
];
51 // Calcular el resumen SHA1. Esto es una especie de función-atajo,
52 // ya que la mayoría de funciones gcrypt requieren
53 // la creación de un handle, etc.
54 gcry_md_hash_buffer( HASH_TYPE
, hash
, txt
, msg_len
);
56 // unsigned int ihash=*((unsigned int *)hash);
57 return *((unsigned int *)hash
);