usuarios - ¿Cuál es el método de encriptación utilizado en/etc/shadow?
etc passwd centos (4)
¿Cuál es el método de encriptación utilizado en / etc / shadow en sistemas GNU / Linux? Me gustaría escribir un pequeño programa para uso personal que use la misma API, pero por el momento no sé por dónde empezar.
Gracias por adelantado
Múltiples métodos de encriptación están disponibles en glibc, vea man 3 crypt, la sección de Notas de Glibc: http://manpages.courier-mta.org/htmlman3/crypt.3.html
Al verificar una contraseña existente, solo pase el formulario encriptado como sal; solo se usará la parte inicial $ id $ salt. Al crear una nueva contraseña, inicializa el id con lo que necesites y pon algunos caracteres aleatorios en sal.
ejemplo básico con 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);
}
Programa de compilación:
$ gcc -lcrypt test.c
Usa la función crypt(3)
. En glibc, el método utilizado depende de la sal, si comienza con:
- $ 1 $: usa MD5.
- $ 5 $: usa SHA-256.
- $ 6 $: usa SHA-512.
- $ 2a $: utiliza blowfish, no compatible en todas partes.
- De lo contrario, usa DES.
Recibo
referencia indefinida a ''cripta''
entonces creo que deberías compilar con
$ gcc test.c -lcrypt