Я делал осуществление сегодня, которое включает создание нового пользователя путем ручного редактирования/etc/group;/etc/shadow;/etc/passwd
Теперь, обращаясь к/etc/shadow, я должен был создать хэши пароля. Я использовал этот сценарий жемчуга:
#!/usr/bin/perl -w
use strict;
my $pwd = $ARGV[0]
chomp($pwd)
my $salt = join "", (".", "/", 0..9, "A".."Z", "a".."z")[rand 64, rand 64];
print crypt($pwd, $salt)."\n";
который, очевидно, генерирует случайные результаты каждый раз.
Когда я протестировал результаты, я узнал, что мог только войти в использование пароля, я раньше прежде создавал случайный хеш.
Мой вопрос: если единственный сценарий получает единый пароль и выводы различные хеши, как это - программа входа в систему, распознает действительный пароль?
Существует соль, используемая в методе склепа. Та же соль всегда производит тот же crypted пароль. Однако соль случайна, и затем кажется, что целый crypted пароль случаен.
существует соль, сохраненная в crypted пароле, и это используется при проверке пароля. Хеширование пароля работает только один путь. Когда проверка соли читается из зашифрованного пароля, и пароль является crypted. Если crypted пароль совпадает с тем в/etc/shadow, пароль в порядке.
Смотрят здесь: https://en.wikipedia.org/wiki/Salt _ (криптография)