[英]crypt function and link error “undefined reference to 'crypt'”
我在c中使用了crypt函数来加密给定的字符串。 我写了以下代码,
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("%s\n",crypt("passwd",1000));
}
但上面的代码引发了一个错误,“未定义引用`crypt'”。 上面的代码有什么问题。
提前致谢。
如果要使用crypt()
函数,则需要链接到提供它的库。 将-lcrypt
添加到编译命令中。
较早版本的glibc为此提供了一个libcrypt
库,并在<unistd.h>
声明了该函数 - 为了针对此支持进行编译,您可能还需要在包含<unistd.h>
之前在代码中定义_XOPEN_SOURCE
或_GNU_SOURCE
。
较新版本的glibc不提供libcrypt
- 而是由单独的libxcrypt
。 您仍然与-lcrypt
链接,但该函数在<crypt.h>
声明。
crypt()
使用的DES 非常不安全 , 可能比你年长12岁。
我建议你使用严格的加密算法,比如AES。 许多图书馆提供此类加密; 例如,OpenSSL(crypto.lib)是一个不错的选择。
因为很多人已经做过,所以没有回答你的实际问题
如果要使用crypt()
则需要包含crypt.h。 在您的其他两个包括下方,添加:
#include <crypt.h>
您需要在包含之前添加以下行:
#define _XOPEN_SOURCE
在#include
头文件之前,你必须#define __XOPEN_SOURCE
。
crypt
函数是非标准的,但是由Linux上的GNU C库作为扩展提供。 它在<crypt.h>
定义
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.