Как моя ОС Linux так быстро выполняет вход в систему?

У меня была такая же ошибка на моем Mac.

  1. вам необходимо убедиться, что ваши файлы разделены табуляцией -и не имеют начальных или конечных пробелов.
  2. эту команду sed можно заменить наpaste -sd,
  3. уход:

    cut -f"$(grep -wFf LIST.TXT TMP | cut -f1 | paste -sd,)" DATA.TXT 
    

Но используйте решение awk, оно намного аккуратнее и не использует файл tmp, а также гораздо более щадяще относится к пробелам:

awk -v OFS='\t' '
    NR == FNR {header[$1] = 1; next}
    FNR == 1 {for (i=1; i<=NF; i++) if ($i in header) column[i] = 1}
    {for (i in column) printf "%s" OFS, $i; print ""}
' headers file

Немного поигравшись, работающий конвейер (whiteout, требующий tmp-файла ), это

cut -f"$(head -1 DATA.TXT | tr '\t' '\n' | nl | grep -Fwf LIST.TXT | awk '{print $1}' | paste -sd,)" DATA.TXT
0
01.05.2021, 12:42
2 ответа

mkpasswdтребует также соли , в противном случае она генерируется для вас каждый раз, когда вы ее запускаете. Если вы деконструируете исходную строку, используя $ в качестве разделителей, вы увидите метод хэширования6 и nxIRLUXhRQljкак соль.

Если мы добавим соль к mkpasswdво время работы, вы получите правильный результат за один раз.

$ mkpasswd -m sha-512 "test" "nxIRLUXhRQlj"
$6$nxIRLUXhRQlj$t29nGt1moX3KcuFZmRwUjdiS9pcLWpqKhAY0Y0bp2pqs3fPrnVAXKKbLfyZcvkkcwcbr2Abc8sBZBXI9UaguU.

Использование соли предотвращает атаку радужной таблицы , поскольку она добавляет к паролю случайную часть перед его хешированием.

3
28.07.2021, 11:36

Хэш пароля (, подобный тому, который вы ввели в myhash), содержит некоторые метаданные, указывающие, какая хеш-функция используется и с какими параметрами, такими как стоимость, соль и выходные данные хеш-функции. В современном формате хэша пароля Unix части разделены$:

  • 6указывает на Unix итерированный метод SHA -512 (, который похож, но не идентичен PBKDF2).
  • Параметры отсутствуют, поэтому коэффициент стоимости является значением по умолчанию.
  • nxIRLUXhRQlj— соль.
  • t29nGt1moX3KcuFZmRwUjdiS9pcLWpqKhAY0Y0bp2pqs3fPrnVAXKKbLfyZcvkkcwcbr2Abc8sBZBXI9UaguU.— ожидаемый результат.

При каждом запуске mkpasswd -m sha-512создается хэш пароля со случайной солью. Таким образом, каждый запуск этой команды производит другой вывод.

Когда вы вводите пароль, система вычисляет iterated_sha512(default_cost, "nxIRLUXhRQlj", typed_password)и проверяет, соответствует ли результат "t29nGt1moX3KcuFZmRwUjdiS9pcLWpqKhAY0Y0bp2pqs3fPrnVAXKKbLfyZcvkkcwcbr2Abc8sBZBXI9UaguU.".

То, что делает ваша программа, отличается :вы генерируете случайную соль, затем сравниваете ее и вывод функции хеширования пароля с myhash. Это срабатывает только в том случае, если вам удалось сгенерировать одну и ту же соль, что имеет пренебрежимо малую вероятность (того, что ваш компьютер не сгенерирует одну и ту же соль дважды в течение вашей жизни ). Но вам не нужно угадывать соль :, она находится прямо в хэше пароля.

Рекомендуем прочитать:Как безопасно хэшировать пароли?

5
28.07.2021, 11:36

Теги

Похожие вопросы