Как использовать Oracle dbms crypto для создания паролей, совместимых с htpasswd

Есть ли способ использовать пакет Oracle / DBMS_CRYPTO PL/SQL для создания паролей, совместимых с apache htpasswd? Поэтому в пакете PL / SQL я создаю хешированный пароль, который при последующем хранении в файле.htpasswd будет работать нормально.

В настоящее время мы делаем это в Unix с помощью команды htpasswd -n -b -d. Однако мы хотели бы создать их и сохранить в таблице Oracle. Затем получите их для создания файлов.htpasswd, когда это необходимо.

Спасибо!

Джо

1 ответ

Решение

htpasswd Инструмент способен генерировать несколько типов хэшированных паролей. Вы используете -d флаг, который использует доисторический crypt() хеш формат crypt() хэши удивительно небезопасны и восхитительно легко взламываются.

Согласно этой странице руководства от Oracle 10g, DBMS_CRYPTO пакет не поддерживает crypt(), Это не удивительно.

Вам нужно будет переключиться на другой алгоритм хеширования, чтобы осуществить это. Самый простой способ будет эквивалентен использованию -s флаг вместо -d флаг для создания паролей SHA1. Попробуйте это в командной строке, чтобы увидеть результаты. Формат пароля - буквальная строка {SHA}за ним следует хеш SHA1 в кодировке base64 без засолки. DBMS_CRYPTO Пакет, кажется, поддерживает SHA1 и намекает на то, что есть функция для кодирования base64. Или, если вы сами создаете файл.htpasswd, вы можете просто сохранить хеш любым удобным для вас способом и преобразовать его на выходе, используя ваш язык.

Другие вопросы по тегам