簡體   English   中英

crypt函數和鏈接錯誤“未定義引用'crypt'”

[英]crypt function and link error “undefined reference to 'crypt'”

我在c中使用了crypt函數來加密給定的字符串。 我寫了以下代碼,

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

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

但上面的代碼引發了一個錯誤,“未定義引用`crypt'”。 上面的代碼有什么問題。

提前致謝。

如果要使用crypt()函數,則需要鏈接到提供它的庫。 -lcrypt添加到編譯命令中。

較早版本的glibc為此提供了一個libcrypt庫,並在<unistd.h>聲明了該函數 - 為了針對此支持進行編譯,您可能還需要在包含<unistd.h>之前在代碼中定義_XOPEN_SOURCE_GNU_SOURCE

較新版本的glibc不提供libcrypt - 而是由單獨的libxcrypt 您仍然與-lcrypt鏈接,但該函數在<crypt.h>聲明。

crypt()使用的DES 非常不安全可能比你年長12歲。

我建議你使用嚴格的加密算法,比如AES。 許多圖書館提供此類加密; 例如,OpenSSL(crypto.lib)是一個不錯的選擇。

因為很多人已經做過,所以沒有回答你的實際問題

如果要使用crypt()則需要包含crypt.h。 在您的其他兩個包括下方,添加:

#include <crypt.h>

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

#define _XOPEN_SOURCE

#include頭文件之前,你必須#define __XOPEN_SOURCE

crypt函數是非標准的,但是由Linux上的GNU C庫作為擴展提供。 它在<crypt.h>定義

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM