Скрипт на Python требует установленной версии Python > 3
.
Скрипт на bash использует для генерации хешированного пароля openssl > 1.1
, поэтому соответствующий пакет должен быть установлен и команда openssl
должна быть доступна в PATH
.
Shell версия считается устаревшей, т.к. корректно работает только на форках RHEL.
В Python версии:
- Игнорируется переменная окружения
SALT_LENGTH
, т.к. в модулеcrypt
всегда используется максимальная длинна соли для выбранного типа шифрования. DEBUG > 1
имеет такое же поведение, как иDEBUG = 1
, это обусловлено тем, что нет смысла выводить скрипт на экран, для его отладки лучше использовать какой нибудь отладчик.- Выдается предупреждение, что модуль
crypt
устаревший, и будет удален. На текущий момент адекватная замена потребует установки модулей из PyPy и ищется вариант отказа от него без дополнительных танцев с бубном.
Настройки производятся через установку переменных окружения перед запуском скрипта. Для установки доступны следующие переменные:
DEBUG
- вывод отладочной информации, значение по умолчанию 0
, может принимать значения 1
- вывод значений переменных, 2
- трассировка выполнения скрипта.
SALT_LENGTH
- длинна соли, значение по умолчанию 16
.
CIPHER
- тип хеш функции, может принимать следующие значения 1
- MD5, 5
- SHA256, 6
- SHA512 (значение по умолчанию).
SALT
- соль используемая для генерации хеша. Должна содержать так-же и код алгоритма. По умолчанию используется случайно сгенерированная соль.
Все значения по умолчанию используются как в CentOS при хешировании пароля и при обычной эксплуатации не требуют изменений.
[semets@pc-emets passwd-hash]$ ./passwd-hash.py
Password:
$6$hRGmGhbBXYu2H4ai$SeKOVSwvmJbWG2diymXsxOg6A9nNty82G/Je5m9rNzNrBJ5aeapfWkocbQLZ2AEnBpl80i7yIy/3Yi2RcZ.y21
[semets@pc-emets passwd-hash]$
[semets@pc-emets passwd-hash]$ export DEBUG=1; ./passwd-hash.py
Salt lenght: 16
Chipher: -6
Random salt: 9k6FyocAgAY5Wg55
Password:
$6$9k6FyocAgAY5Wg55$cdTJ9JE5NzwYQ83MJN/BypaupvHDl6.LJycXM4YGMb6mV6aTSAjuruJ/8ANiaSYdRWdpYnyvi8d2lwVpBuClc1
[semets@pc-emets passwd-hash]$
[semets@pc-emets passwd-hash]$ export CIPHER=1; ./passwd-hash.py
Password:
$1$K7g9yn3f$gdbDSeEukuHStvnfeCsrl/
[semets@pc-emets passwd-hash]$