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

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

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

Спасибо!

Джо


person user1505207    schedule 05.07.2012    source источник


Ответы (1)


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

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

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

person Charles    schedule 06.07.2012
comment
Чарльз, Большое спасибо за информативный ответ. Прошу прощения за поздний ответ, но меня не было несколько дней. Я попробую это и опубликую свои результаты. - person user1505207; 11.07.2012