c の crypt 関数を使用して、指定された文字列を暗号化しました。私は次のコードを書きました、
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("%s\n",crypt("passwd",1000));
}
しかし、上記のコードは、「'crypt' への未定義の参照」というエラーをスローしました。上記のコードの問題は何ですか。
前もって感謝します。
c の crypt 関数を使用して、指定された文字列を暗号化しました。私は次のコードを書きました、
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("%s\n",crypt("passwd",1000));
}
しかし、上記のコードは、「'crypt' への未定義の参照」というエラーをスローしました。上記のコードの問題は何ですか。
前もって感謝します。
関数を使用する場合はcrypt()
、それを提供するライブラリにリンクする必要があります。-lcrypt
コンパイル コマンドに追加します。
古いバージョンの glibc はlibcrypt
、この目的のためにライブラリを提供し<unistd.h>
、このサポートに対してコンパイルするために -_XOPEN_SOURCE
で関数を宣言しまし_GNU_SOURCE
た<unistd.h>
。
新しいバージョンの glibc は提供していません。libcrypt
代わりに、別のlibxcrypt
. とリンクします-lcrypt
が、関数は代わりに で宣言され<crypt.h>
ます。
crypt()
uses DES which is extremely insecure and probably older than you 12 years older than you.
I suggest you use a serious encryption algorithm, such as AES. Many libraries offer such encryption; OpenSSL (crypto.lib) is a good choice for example.
Not answering your actual question since a lot of people already did
ヘッダーファイルの#define __XOPEN_SOURCE
前に行う必要があります。#include
を使用する場合は、crypt.h を含める必要がありますcrypt()
。他の 2 つのインクルードの下に、以下を追加します。
#include <crypt.h>
インクルードの前に次の行を追加する必要があります。
#define _XOPEN_SOURCE
このcrypt
関数は非標準ですが、Linux の GNU C ライブラリによって拡張機能として提供されています。で定義されています<crypt.h>