Почему теневой пароль, хэшированный с sha512, содержит 99 вместо 129 символов?
Мой Linux настроен на использование sha512
, Тем не менее, /etc/shadow
Файл содержит хешированный пароль длиной всего 99 символов. Почему 99 а не 129 (64*2+1)? Обратите внимание, что я сменил пароль после того, как убедился, что система настроена на использование sha512.
Пожалуйста, смотрите результаты:
# grep sha512 /etc/pam.d/system-auth-ac
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
# grep ENCRYPT_METHOD /etc/login.defs
ENCRYPT_METHOD SHA512
# grep root /etc/shadow
root:$6$YwkRWeVN$z4Z7OKuohyyT/4gZgnOkKSWPaMvx1eCHFGNCiyFZx1QYydrEArO.HdH2JGCfosXg0sTnZFFdJnfw5QgfUqovO1:16175:0:99999:7:::
Обратите внимание, что хеш пароля начинается с $6$
так что это указывает на то, что это sha512
хэш.
1 ответ
Решение
Хеш хранится в формате base64, что означает, что один символ кодирует 6 битов. Поэтому необходимо 512 / 6 = 86 (округленных) символов.
Хеш начинается после третьего (не 2-го) $ и заканчивается перед следующим двоеточием, которое составляет ровно 86 символов. Строка YwkRWeVN
между 2 и 3 $ называется солью.