0

我正在尝试使用crypt这样的函数(我是 C 新手,这只是为了学习)

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


char *crypt(const char *key, const char *salt);

int main()
{
    char* key="ilya";
    char* salt="xx";

    char* password=(char*)crypt(key, salt);

    printf("%s\n", password);

    return 0;
}

我使用它编译它make filename ,我得到以下错误:

/home/bla/password.c:20: undefined reference to `crypt'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是为什么?

(我知道这是一种非常糟糕的加密方式,这只是为了学习目的)

4

1 回答 1

1

gcc file.c -o file -lcrypt如果您正在运行 Linux,请尝试链接 libcrypt 库。

您可以(char*)从调用中删除强制转换crypt(),它已经返回 achar *以及crypt()函数的声明,因为它已经从unistd.h.

我也建议你改变这个:

char *key
char *salt

const char *key
const char *salt

由于它们指向只读内存,SIGSEGV如果您尝试修改它们指向的内容,则会产生(分段错误信号)。

于 2012-12-11T15:39:52.113 回答