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