Какой метод шифрования используется в/etc/shadow?
Какой метод шифрования используется в /etc/shadow для систем GNU/Linux? Я хотел бы написать небольшую программу для личных целей, которая использует тот же API, но на данный момент я не знаю, с чего начать.
Заранее спасибо
Ответы
Ответ 1
Используйте функцию crypt(3)
. В glibc используемый метод зависит от соли, если он начинается с:
- $1 $: он использует MD5.
- $5 $: используется SHA-256.
- $6 $: он использует SHA-512.
- $2a $: он использует blowfish, не поддерживается везде.
- В противном случае он использует DES.
Ответ 2
Несколько методов шифрования доступны в glibc, см. man 3 crypt, раздел Glibc Notes: http://manpages.courier-mta.org/htmlman3/crypt.3.html
При проверке существующего пароля просто передайте зашифрованную форму как соль; будет использоваться только начальная часть $id $salt. При создании нового пароля инициализируйте id тем, что вам нужно, и поместите некоторые случайные символы в соль.
Ответ 3
базовый пример 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
Ответ 4
Я получаю
undefined ссылка на `crypt '
поэтому я думаю, что вы должны скомпилировать с помощью
$ gcc test.c -lcrypt