Я изучаю безопасность паролей Linux (больше любопытства, чем что-либо полезное) и понимаю, что настоящий пароль хэшируется и сохраняется в файле теневых паролей. В чем я не уверен и не смог найти в моем кратком поиске по Google, так это то, что кодирование используется для кодирования хешированного значения (и значения соли). Это, очевидно, не шестнадцатеричное, и это, очевидно, текст, за исключением :
символа. Может кто-нибудь здесь сказать мне, что это за кодировка?
Редактировать: я понимаю хеширование (MD5, SHA-X), соль и спецификатор хеширования. То, что я ищу, - это метод преобразования результатов хеширования (байтовый массив (byte [])) в последовательность символов, которую я вижу в файле, то есть кодировку.
Ответы:
В случае MD5 crypt () соль - это просто случайная строка длиной до 8 символов из [a-zA-Z0-9./].
Затем соль и пароль хешируются, проходят через функцию усиления, затем кодируются с использованием варианта на Base64:
источник
Если вы хотите знать только, как кодируется пароль, crypt () использует специальный тип кодировки Base64.
В кодировке Base64 используется следующая кодировка: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /
В то время как кодировка crypt () использует эту кодировку: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Кроме того, в отличие от Base64, здесь нет "=".
С другой стороны, реализации crypt () MD5, SHA-X и т. Д. Делают больше, чем просто генерируют случайную соль, запускают хэш-функцию и кодируют ее, используя прежнюю кодировку.
Я рекомендую прочитать эти два замечательных поста: «Хеширование паролей с помощью MD5-crypt по отношению к MD5» и «Внедрение SHA512-crypt против MD5-crypt» , для более полного объяснения.
источник
Первая часть хеша между $ указывает, какой алгоритм используется.
Проверьте http://en.wikipedia.org/wiki/Crypt_%28Unix%29 для списка того, что означают различные значения.
источник
Вы ищете используемый алгоритм?
Традиционно в Unix и ранних версиях Linux использовался ослабленный DES, основанный не более чем на 8 символах пароля. Большинство современных установок Linux используют хеши MD5 для паролей, а некоторые поддерживают SHA. Кроме того, появилась более модульная поддержка дополнительных алгоритмов, в том числе Blowfish. GNU libc, используемый большинством Linux, поддерживает DES, MD5 и SHA, предоставляя вам несколько вариантов.
Конкретный тип используемого алгоритма хеширования указан в качестве начала пароля как $ DIGIT $. Например, $ 1 $ - это MD5.
Вы можете получить более подробную информацию из Википедии (см. Страницу на Crypt_ (Unix) ) или в Google для "crypt unix" или "crypt linux".
источник