1

我想对来自 MySQL 5.1 数据库的文件夹的用户进行身份验证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 users ON user_access_keys.user_id = users.id WHERE name = %s

base64_encode存储函数在哪里(Mysql 5.1 还TO_BASE64没有)。此查询返回一个 61 字节的 BLOB,它与 apache 使用的格式不同。我怎样才能生成相同的格式?

您也可以为此建议其他方法。关键是我想使用纯文本作为密码对 MySQL5.1 数据库中的用户进行身份验证。

4

1 回答 1

2

您所指的文档并不意味着“仅限 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
于 2012-09-23T07:18:35.163 回答