Soporte para bloques de n lineas (n=6)
[mx3r.git] / merge3.c
bloba223623324be8f1591940361da8c1efd59c7ffb2
1 /*
2 Code originally retrieved from http://ubuntuforums.org/archive/index.php/t-337664.html
3 */
4 #include <gcrypt.h>
5 #include <stdio.h>
6 #include <stdlib.h>
7 // Tipos de hashes :
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.
16 if ( argc < 2 ) {
17 fprintf( stderr, "Usage: %s <string>\n", argv[0] );
18 exit( 1 );
21 int i,b;
22 int nhashes=argc-1;
23 unsigned int *int_hash=malloc((nhashes)*sizeof(unsigned int));
24 for (i=1;i<argc;i++)
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]);
35 printf( "\n");
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);