我正在尝试实现一个简单的代码,该代码返回给定密码的相应MD5:
#include <stdio.h>
//Returns the MD5 hash for a given password
char hash_password(char password){
FILE *fp;
char command [1024];
sprintf(command, "md5 <<< '%c'", password);
fp = popen(command, "r");
if (fp == NULL) {
printf("Failed to run command\n" );
}
char hashed[1024];
fgets(hashed , 1024 , fp);
pclose(fp);
return hashed;
}
int main(int argc, const char * argv[]) {
char hashed = hash_password("password");
printf("%s\n", hashed);
return 0;
}
我的问题如下:
return hashed;
处收到警告:“不兼容的指向整数转换的指针从结果类型为char的函数返回char [1024]”char hashed = hash_password("password");
发出警告:“不兼容指向整数传递char [9]的指针到char类型的参数”\320
,这不是正确的哈希结果。我对C的两天经验表明,函数将永远不会返回我需要的函数,因为hashed
将在函数结束时死掉,对吧?我怎样才能修好它?
答案 0 :(得分:1)
char
。它应该是char*
或const char*
。