Cifrado hash SHA1 en C

Iniciado por mester, 29 Mayo 2016, 17:32 PM

0 Miembros y 1 Visitante están viendo este tema.

mester

Hola.
Estoy intentando cifrar cadenas con el hash SHA1 pero me devuelve la cadena en binario, y la quiero en texto. Ejemplo:

#include <stdio.h>
#include <openssl/sha.h>

int main() {
  char *a = "hola";
  size_t len = sizeof(a);
  unsigned char hash[40];

  SHA1(a, len, hash);
  printf("%s\n", hash);

  return 0;
}


Y me devuelve esto:

�X�{�]�Μ(`x�;6�


Gracias de antemano
Justicia es dar a cada uno lo que se merece

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AlbertoBSD

Tienes que pasarla a hexadecimal byte por byte, en un ciclo:


i = 0;
l = 20;
while(i < l) {
printf("%.2x",hash[i++]);
}


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

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW