GNU/Linuxシステムの/ etc/shadowで使用されている暗号化方法はどれですか?同じAPIを使用する個人的な目的で小さなプログラムを書きたいのですが、現時点ではどこから始めればよいかわかりません。
前もって感謝します
crypt(3)
関数を使用します。 glibcでは、次の文字で始まる場合、使用する方法はソルトによって異なります。
Glibcでは複数の暗号化方式を使用できます。man3 cryptのGlibcのメモセクションを参照してください。 http://manpages.courier-mta.org/htmlman3/crypt.3.html
既存のパスワードを検証するときは、暗号化されたフォームをソルトとして渡すだけです。最初の$ id $ salt部分のみが使用されます。新しいパスワードを作成するときは、必要なものでidを初期化し、ランダムな文字をソルトに入れます。
crypt()の基本的な例
#include <stdio.h>
#include <stdlib.h>
#define MAX_STR 256
#define MAX_SALT 12
int main(int argc, char *argv[]) {
char password[MAX_STR];
char salt[MAX_SALT];
printf("salt: ");
scanf("%s", salt);
printf("password: ");
scanf("%s", password);
printf("Encrypt '%s' : '%s'\n", password, crypt(password, salt));
return(EXIT_SUCCESS);
}
コンパイルプログラム:
$ gcc -lcrypt test.c