Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2011, 07:22
Avatar de Payin
Payin
 
Fecha de Ingreso: mayo-2007
Mensajes: 92
Antigüedad: 17 años
Puntos: 0
Cadenas diferentes pero me las toma como iguales

Hola forer@s, les traigo una inquietud que estoy teniendo. Hace un par de semanas me incursioné en C con una idea media tonta pero como para comenzar, el tema es que quiero hacer el Hash de dos cadenas de caracteres y compararlas, si dan iguales poner algo y sino otra cosa. Luego este pedazo de codigo lo utilizaré en una funcion de otro programa. Me gustaría saber porqué en este código cuando lo ejecuto siempre me da que son cadenas iguales (las ya hasheadas)

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(void)
{		
 	char original[512];
    	char *clave;
	char *clave2;
	int ok;
	//para que sea MD5 SALT debe comenzar con $1$
	const char *const salt = "$1$";
    	printf("Ingrese el texto a encriptar \n");
	fgets(original, sizeof(original), stdin);
	original[strlen(original) - 1] = '\0';	
	clave = crypt(original, salt);
	puts(clave);
	printf("Ingrese el texto a comparar \n");
	fgets(original, sizeof(original), stdin);
	original[strlen(original) - 1] = '\0';	
	clave2 = crypt(original, salt);
	puts(clave2);
	ok = strcmp(clave,clave2)==0;
	puts(ok ? "Claves Iguales" : "Claves diferentes");
	return ok ? 0 : 1;
}
cuando lo compilo (con el gcc) me da esto

Código:
encriptar.c:18: warning: assignment makes pointer from integer without a cast
encriptar.c:23: warning: assignment makes pointer from integer without a cast
si bien he buscado e intentado cambiarlo no se qué problema tienen esas dos asignaciones (clave y clave2).
Muchas gracias y saludos