如何为DBD和MySQL 5.1中使用的Apache2身份验证生成正确的密码格式?
我想用如何为DBD和MySQL 5.1中使用的Apache2身份验证生成正确的密码格式?,mysql,apache,authentication,apache2,mod-auth,Mysql,Apache,Authentication,Apache2,Mod Auth,我想用AuthType Basic 密码以纯文本形式存储(它们不是真正的密码,因此不重要)。 但是,apache的密码格式只允许在Linux系统上使用SHA1、MD5 如何使用SQL查询生成正确的格式?apache格式似乎是长度为20的二进制格式,但mysqlSHA1函数返回的长度为40 我的SQL查询如下所示: SELECT CONCAT('{SHA}', BASE64_ENCODE(SHA1(access_key))) FROM user_access_keys INNER JOIN use
AuthType Basic
密码以纯文本形式存储(它们不是真正的密码,因此不重要)。
但是,apache的密码格式只允许在Linux系统上使用SHA1、MD5 如何使用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\u encode
是一个存储函数(Mysql 5.1还没有TO\u base64
)。此查询返回一个61字节的BLOB,它与apache使用的格式不同。如何生成相同的格式
你也可以为此建议其他方法。关键是,我想使用纯文本作为密码对MySQL5.1数据库中的用户进行身份验证。您提到的文档并不意味着“仅限Unix”意味着非Linux,因此您可以使用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
好的,那么我如何使用SQL查询生成正确的格式呢?