Просто добавьте set -x
в скрипт, который вы используете. Вы можете закончить это добавлением set +x
в скрипт, чтобы, например, ограничить вывод отладочной работы.
> openssl passwd -1 "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/
Это расширенный синтаксис хеширования пароля в стиле Unix -crypt(3)
, в частности, его версия MD5.
Первая $1$
идентифицирует тип хэша, следующая часть OKgLCmVl
— соль, используемая при шифровании пароля, затем после символа-разделителя $
до конца строки — фактический хэш пароля.
Итак, если вы возьмете солевую часть из первого шифрования и будете использовать ее с последующими, вы всегда должны получать один и тот же результат:
> openssl passwd -1 -salt "OKgLCmVl" "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/
> openssl passwd -1 -salt "OKgLCmVl" "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/
Когда вы меняете пароль , вы всегда должны переключаться на новую соль. Это не позволяет никому узнать постфактум, действительно ли новый пароль совпадает со старым. (Если вы хотите предотвратить повторное -использование старых паролей, вы можете, конечно, дважды хешировать кандидата на новый пароль :один раз со старой солью, а затем, если результат отличается от старого пароля и, таким образом, приемлемо, опять же с новой солью.)
Если вы используете openssl passwd
без опций, вы получите исходныйcrypt(3)
-совместимый хеш, как описано dave _thompson _085. При этом солью являются две первые буквы хеша :
> openssl passwd "a"
imM.Fa8z1RS.k
> openssl passwd -salt "im" "a"
imM.Fa8z1RS.k
Не следует использовать этот старый стиль хеширования в любых новых реализациях, так как он ограничивает эффективную длину пароля до 8 символов и содержит слишком мало соли для адекватной защиты от современных методов.
(Однажды я подсчитал объем данных, необходимых для хранения полного набора радужных таблиц для каждого классического crypt(3)
хэша. Я не помню точного результата, но, если предположить, что мои расчеты были верны, он был порядка «скромной стопки мульти--терабайтных дисков». На мой взгляд, это помещает его в диапазон «организованные преступники могут это сделать».)
В отличие от обычных хэшей, хэши паролей должны использовать «соль» и должны быть медленными (обычно за счет повторения )для предотвращения получения хэша злоумышленником (es )от простого восстановления пароля (s ). См. canonical на security.SX и многие связанные с ним.
Оригинальный крипт 1970-х годов (3 ), теперь для ясности называемый DEScrypt,(слегка )соленый:
salt is a two-character string chosen from the set [a-zA-Z0-9./]. This string is used to perturb the algorithm in one of 4096 different ways.
Несколько более новая схема MD5crypt переработана и переработана, но не соответствует современным стандартам. Обе эти и некоторые из лучших схем, которые заменили их в Unix (es ), подробно описаны в https://en.wikipedia.org/wiki/Crypt_%28C%29.