awk - прочитать программу И вход от стандартного входа?

Вы не можете извлечь значение хэш-функции, потому что это не там.

Когда пользователь входит в систему, операционная система должна иметь ссылочную копию его пароля для сравнения с паролем, который вводит пользователь. Это - то, что хранится в /etc/shadow. Если введенный пароль идентичен ссылочному паролю, аутентификация успешно выполняется. Для создания восстановления пароля трудным система не хранит пароль, но хеш его (медленный, соленый хеш для предпринятия попыток грубой силы предположить более трудный пароль).

Шифрование работает по-другому. Цель состоит в том, чтобы защитить от взломщика, у которого есть доступ к устройству хранения данных, таким образом, не должно быть возможно извлечь ключ шифрования из того, что хранится на одном только устройстве. Следовательно ключ не хранится на устройстве, но создается из информации, хранившей на устройстве, объединенном с информацией, предоставленной пользователем. Как правило, ключ сгенерирован от соли, сохраненной на устройстве, объединенном с паролем, предоставленным пользователем. Снова, для замедления попыток грубой силы процесс для объединения тех значений должен быть медленным, и процесс использует значение для каждого устройства (соль) в дополнение к паролю пользователя так, чтобы использование того же пароля не приводило к тому же ключу. То, что Вы имеете на устройстве, является в основном только солью, чтобы быть объединенным с паролем для генерации ключа.

2
04.08.2014, 17:41
2 ответа
process_data() {
  awk -F /dev/fd/3 3<< \EOF
  awk code here
EOF
}

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

awk '
  BEGIN {...}
  /.../ ...
  END {...}
'

Если речь идет о встраивании символов одиночных кавычек в сценарий awk, то другой подход - хранить код в переменной:

awk_code=$(cat << \EOF
{print "'quoted' " $0}
EOF
)

И делать:

process_data() {
  awk "$awk_code"
}
7
27.01.2020, 21:50

Зачем нужна программа из stdin? Можно использовать одинарные кавычки ('), так как Bash позволяет разделить содержимое между несколькими строками.

# awk 'BEGIN { sum = 0 }
{ sum += $1 }
END { printf("sum = %d\n", sum) }' << EOF
1
2
3
EOF
3
27.01.2020, 21:50

Теги

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