我在 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>