Почему теневой пароль, хэшированный с 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 $ называется солью.

Другие вопросы по тегам