C 加密函数和链接错误“;未定义对'的引用;地穴'&引用;
我在c中使用了crypt函数来加密给定的字符串。 我已经编写了以下代码C 加密函数和链接错误“;未定义对'的引用;地穴'&引用;,c,linker-errors,crypt,C,Linker Errors,Crypt,我在c中使用了crypt函数来加密给定的字符串。 我已经编写了以下代码 #include<stdio.h> #include<unistd.h> int main() { printf("%s\n",crypt("passwd",1000)); } #包括 #包括 int main() { printf(“%s\n”,crypt(“passwd”,1000)); } 但是上面的代码抛出了一个错误,“对'crypt'的未定义引用”。 上面代码中的问题是什么 提
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("%s\n",crypt("passwd",1000));
}
#包括
#包括
int main()
{
printf(“%s\n”,crypt(“passwd”,1000));
}
但是上面的代码抛出了一个错误,“对'crypt'的未定义引用”。
上面代码中的问题是什么
提前感谢。如果要使用
crypt()
,您需要包括crypt.h。在您的其他两个附件下面,添加:
#include <crypt.h>
#包括
crypt函数是非标准函数,但由Linux上的GNU C库作为扩展提供。它是在
中定义的。您需要在include之前添加以下行:
#define _XOPEN_SOURCE
crypt()
我建议您使用严格的加密算法,如AES。许多图书馆提供这种加密;例如,这是一个很好的选择
没有回答您的实际问题,因为很多人已经回答了如果您想使用crypt()
函数,您需要链接到提供该函数的库。将-lcrypt
添加到compile命令中
glibc的旧版本为此提供了一个libcrypt
库,并在
中声明了函数-要根据此支持进行编译,在包含
之前,您可能还需要在代码中定义\u XOPEN\u SOURCE
或\u GNU\u SOURCE
较新版本的glibc不提供libcrypt
——而是由单独的libxcrypt
提供。您仍然链接到-lcrypt
,但是函数在中声明,您必须在包含头文件之前定义源代码。
没有加密而不是加密?@Joha:no,否则它将被称为hash
,不是吗?我已经在我的代码中添加了这一行。之后它也抛出了同样的错误。“几乎所有Linux发行版使用的GNU C库都提供了一个crypt函数的实现,它支持DES、MD5和基于SHA的哈希算法”(至少根据Wikipedia)