6

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

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

int main()
{
    printf("%s\n",crypt("passwd",1000));
}

但是上面的代码抛出了一个错误“undefined reference to 'crypt'”。上面的代码有什么问题。

提前致谢。

4

6 回答 6

11

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

旧版本的 glibclibcrypt为此提供了一个库,并声明了函数<unistd.h>in- 以针对此支持进行编译,您可能还需要_XOPEN_SOURCE_GNU_SOURCE包含<unistd.h>.

较新版本的 glibc 不提供libcrypt- 它由单独的libxcrypt. 您仍然与 链接-lcrypt,但该函数是在 中声明的<crypt.h>

于 2010-04-02T07:51:44.457 回答
7

crypt()使用非常不安全的 DES,并且可能比您大12 岁。

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

没有回答你的实际问题,因为很多人已经回答了

于 2010-04-02T07:11:26.393 回答
2

您必须在头文件#define __XOPEN_SOURCE之前。#include

于 2015-07-14T13:57:52.997 回答
1

如果要使用 crypt.h,则需要包含crypt(). 在您的其他两个包括下方,添加:

#include <crypt.h>
于 2010-04-02T06:59:07.900 回答
1

您需要在包含之前添加以下行:

#define _XOPEN_SOURCE
于 2010-04-02T07:02:23.290 回答
0

crypt函数是非标准的,但由 Linux 上的 GNU C 库作为扩展提供。它定义在<crypt.h>

于 2010-04-02T06:59:12.380 回答