繁体   English   中英

crypt函数和链接错误“未定义引用'crypt'”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM