Как создать правильный формат пароля для аутентификации Apache2 при использовании с DBD и MySQL 5.1?
Я хочу аутентифицировать пользователей для папки из базы данных MySQL 5.1 с AuthType Basic
,
Пароли хранятся в виде простого текста (на самом деле они не являются паролями, поэтому не имеет значения).
Однако формат пароля для apache допускает только SHA1, MD5 в системах Linux, как описано здесь.
Как я могу создать правильный формат с запросом SQL? Похоже, формат Apache является двоичным форматом с длиной 20, но MySQL SHA1
функция возврата 40 долго.
Мой запрос SQL выглядит примерно так:
SELECT CONCAT('{SHA}', BASE64_ENCODE(SHA1(access_key))) FROM user_access_keys INNER JOIN users ON user_access_keys.user_id = users.id WHERE name = %s
где base64_encode
является хранимой функцией (Mysql 5.1 не имеет TO_BASE64
еще). Этот запрос возвращает 61-байтовый BLOB-объект, который отличается от формата, используемого Apache. Как я могу создать такой же формат?
Вы можете предложить другой метод для этого тоже. Дело в том, что я хочу аутентифицировать пользователей из базы данных MySQL5.1, используя простой текст в качестве пароля.
1 ответ
Документ, на который вы ссылаетесь, не подразумевает не-Linux под "Unix-only", поэтому crypt() вам доступен. Поскольку вы, похоже, не заботитесь о безопасности, я полагаю, что это самый простой вариант наряду с функцией шифрования MySQL. Возможно, вы захотите использовать постоянное начальное значение в ваших запросах.
SELECT ENCRYPT(access_key, 'SA') FROM user_access_keys INNER JOIN users ON user_access_keys.user_id = users.id WHERE name = %s