[英]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.