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

kir*_*ika 6 c crypt linker-errors

我在c中使用了crypt函数来加密给定的字符串.我写了以下代码,

#include<stdio.h>
#include<unistd.h>

int main()
{
    printf("%s\n",crypt("passwd",1000));
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码引发了一个错误,"未定义引用`crypt'".上面的代码有什么问题.

提前致谢.

caf*_*caf 10

如果要使用该crypt()功能,则需要链接到提供该功能的库.添加-lcrypt到您的编译命令.

旧版本的glibc libcrypt为此目的提供了一个库,并声明了该函数<unistd.h>- 要针对此支持进行编译,您可能还需要在包含之前定义_XOPEN_SOURCE_GNU_SOURCE在代码中定义<unistd.h>.

较新版本的glibc不提供libcrypt- 而是由一个单独的提供libxcrypt.你仍然链接-lcrypt,但函数是声明的<crypt.h>.


Tho*_*ini 7

crypt()使用DES是非常不安全的,可能比你年长12岁.

我建议你使用严格的加密算法,比如AES.许多图书馆提供此类加密; 例如,OpenSSL(crypto.lib)是一个不错的选择.

因为很多人已经做过,所以没有回答你的实际问题

  • "几乎所有Linux发行版使用的GNU C库都提供了crypt函数的实现,它支持基于DES,MD5和SHA的散列算法"(至少根据维基百科) (2认同)