代码如下,运行环境为Windows 10。Openssl/md5.h 这一行一直报错,我已经尝试过安装OpenSSL,但是还是报错。我询问的解决方案是要在gcc的时候加一个特殊的flag这个程序才能正常运行,那么要加的flag是什么呢?7de38f3c3d3baa7ca58a366f09577586经过转换是secrets,这应该是正确答案,但是因为程序运行不起来所以无法确定。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/md5.h>
char* md5sum(char* string)
{
unsigned char digest[16] = { 0 };
char* digest_str = malloc(33);
memset(digest_str, 0, 33);
MD5((unsigned char*)string, strlen(string), digest);
for (int i = 0; i < 16; ++i)
{
sprintf(digest_str + i * 2, "%02x", digest[i]);
}
return digest_str;
}
int check_flag(char* flag)
{
char* checksum = md5sum(flag);
if (!memcmp(checksum, "7de38f3c3d3baa7ca58a366f09577586", 32)) {
return 0;
}
return 1;
}
int main(int argc, char** argv)
{
char flag[1024];
printf("%s\nInput flag: ", argv[0]);
scanf("%s", flag);
if (!check_flag(flag)) {
puts("Congrats!");
}
else {
puts("Wrong flag :<");
}
}
把openssl路径加入到项目的包含目录中
你现在写的是相对路径,编译器必须找到文件的绝对路径,要么你#include的时候直接写绝对路径,要么把相对路径在包含目录中指定