Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mester en 29 Mayo 2016, 17:32 pm



Título: Cifrado hash SHA1 en C
Publicado por: mester en 29 Mayo 2016, 17:32 pm
Hola.
Estoy intentando cifrar cadenas con el hash SHA1 pero me devuelve la cadena en binario, y la quiero en texto. Ejemplo:
Código
  1. #include <stdio.h>
  2. #include <openssl/sha.h>
  3.  
  4. int main() {
  5.  char *a = "hola";
  6.  size_t len = sizeof(a);
  7.  unsigned char hash[40];
  8.  
  9.  SHA1(a, len, hash);
  10.  printf("%s\n", hash);
  11.  
  12.  return 0;
  13. }

Y me devuelve esto:
Código:
�X�{�]�Μ(`x�;6�

Gracias de antemano


Título: Re: Cifrado hash SHA1 en C
Publicado por: engel lex en 29 Mayo 2016, 17:47 pm
sha no es un cifrado, es un hash
lo ves en binario porque ese es el resultado, si quieres verlo como clásicamente se muestra tienes que pasarlo a hexadecimal


Título: Re: Cifrado hash SHA1 en C
Publicado por: AlbertoBSD en 29 Mayo 2016, 17:50 pm
Tienes que pasarla a hexadecimal byte por byte, en un ciclo:

Código
  1. i = 0;
  2. l = 20;
  3. while(i < l) {
  4. printf("%.2x",hash[i++]);
  5. }

Aun asi creo que debe de existir otra implementacion que ya te lo pase en hecadecimal...

Saludos