Estoy tratando de entender cómo las distribuciones Linux típicas generan el campo de contraseña para las entradas en /etc/shadow
. No puedo averiguar qué algoritmo de cifrado se está utilizando para producir la cadena de contraseña cifrada.
Por ejemplo:
$1$CQoPk7Zh$370xDLmeGD9m4aF/ciIlC.
Por lo que entiendo, el primer valor 1
significa que se utilizó un método de hashing MD5 con el segundo valor CQoPk7Zh
como la sal. Sin embargo, ¿cuál fue el algoritmo de cifrado utilizado para producir la cadena de contraseña cifrada final 370xDLmeGD9m4aF/ciIlC.
?
La página de manual de Linux para crypt (3) tiene una nota para glibc2 :
Si salt es una cadena de caracteres que comienza con los caracteres " $ id $ " seguido de una cadena que termina con "$":
$id$salt$encrypted
luego, en lugar de utilizar la máquina DES, id identifica el método de cifrado utilizado y esto determina cómo Se interpreta el resto de la cadena de contraseña.
Creo que la semántica me está desechando: el manual dice id especifica el método de cifrado , pero está especificando el método de hashing .
Creo que el proceso está funcionando así:
password ==> MD5(password+salt) ==> hash ==> encryption-algorithm(hash) ==> encrypted-pass
Entonces, ¿cómo puedo determinar el algoritmo de cifrado? Específicamente, ¿qué algoritmo de cifrado se usa cuando id es 6
( SHA512 )?