19

GNU/Linuxシステムの/etc/ shadowで使用される暗号化方法はどれですか?同じAPIを使用する個人的な目的の小さなプログラムを書きたいのですが、現時点ではどこから始めればよいのかわかりません。

前もって感謝します

4

4 に答える 4

40

関数を使用しcrypt(3)ます。glibcでは、次で始まる場合、使用される方法はソルトによって異なります。

  • $ 1 $:MD5を使用します。
  • $ 5 $:SHA-256を使用します。
  • $ 6 $:SHA-512を使用します。
  • $ 2a $:ブローフィッシュを使用していますが、どこでもサポートされていません。
  • それ以外の場合はDESを使用します。
于 2012-09-30T11:35:46.947 に答える
6

glibcでは複数の暗号化方式を利用できます。man3crypt、Glibc Notesセクションを参照してください:http://manpages.courier-mta.org/htmlman3/crypt.3.html

既存のパスワードを確認するときは、暗号化されたフォームをソルトとして渡すだけです。最初の$id$salt部分のみが使用されます。新しいパスワードを作成するときは、必要なものでidを初期化し、ランダムな文字をソルトに入れます。

于 2012-09-30T11:38:38.120 に答える
4

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
于 2012-09-30T13:03:02.847 に答える
-1

私は受け取ります

`crypt'への未定義の参照

だから私はあなたがでコンパイルする必要があると思います

$ gcc test.c -lcrypt

于 2015-03-27T08:43:56.800 に答える