我在c中使用了crypt函数来加密给定的字符串。 我写了以下代码,
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("%s\n",crypt("passwd",1000));
}
但是上面的代码引发了一个错误,“未定义引用`crypt'”。 上面的代码有什么问题。
提前致谢。
答案 0 :(得分:10)
如果要使用crypt()
功能,则需要链接到提供它的库。将-lcrypt
添加到编译命令中。
较旧版本的glibc为此目的提供了一个libcrypt
库,并在<unistd.h>
中声明了该函数 - 要针对此支持进行编译,您可能还需要定义_XOPEN_SOURCE
或{在包含_GNU_SOURCE
之前的代码中{1}}。
较新版本的glibc不提供<unistd.h>
- 而是由单独的libcrypt
提供。您仍然与libxcrypt
相关联,但该功能在-lcrypt
中声明。
答案 1 :(得分:7)
crypt()
使用的是非常不安全的DES,而可能比你年长比你大12岁。
我建议您使用严格的加密算法,例如AES。许多图书馆提供此类加密;例如,OpenSSL (crypto.lib)是一个不错的选择。
没有回答你的实际问题,因为很多人已经做过
答案 2 :(得分:1)
如果要使用crypt()
,则需要包含crypt.h。在其他两个包括下方,添加:
#include <crypt.h>
答案 3 :(得分:1)
您需要在包含之前添加以下行:
#define _XOPEN_SOURCE
答案 4 :(得分:1)
在#define __XOPEN_SOURCE
头文件之前,您必须#include
。
答案 5 :(得分:0)
crypt
函数是非标准函数,但是由Linux上的GNU C库作为扩展提供。它在<crypt.h>