使用blowfish加密验证MySQL

时间:2012-03-18 19:44:56

标签: php mysql authentication webdav virtualhost

我的用户名和密码存储在带有blowfish encrption的mysql数据库中。 在php中,我可以像这样加密密码:

crypt($pwd, _SALT_)

其中$pwd = 'userpwd'_SALT_ = $2a$07...

我正在寻找一种在mod_auth_mysql的VirtualHost中使用用户表的方法。我知道使用Auth_MySQL_Encryption_Types PHP_MD5 md5是可能的,但我宁愿留在河豚。

如何告诉mysql_auth使用blowfish?我在哪里输入盐?

修改

这里的基本问题是我必须在vhost文件中的关键字之间使用'_'。所以它看起来像:

<Location /webdav>
AuthType Basic
AuthName "jst-development"
AuthUserFile /dev/null
AuthBasicAuthoritative Off
Auth_MySQL on
Auth_MySQL_Authoritative on
Auth_MySQL_DB user
Auth_MySQL_User user
...

而不是[取自http://modauthmysql.sourceforge.net/CONFIGURE]

AuthMySQLDB authdata
AuthMySQLUserTable user_info
AuthMySQLGroupField user_group

停止apache抱怨语法。有人可以告诉我为什么或告诉我AuthMySQLSaltField <>

的'_'-语法

// 编辑2: 版本:libapache2-mod-auth-mysql(4.3.9-13ubuntu1)

// 编辑3: 服务器版本:Apache / 2.2.14(Ubuntu) 使用没有'_'的'官方语法'时出现确切错误: 无效的命令'AuthMySQLDB',可能由服务器配置中未包含的模块拼写错误或定义

3 个答案:

答案 0 :(得分:0)

使用

AuthMySQLPwEncryption crypt

http://modauthmysql.sourceforge.net/CONFIGURE

AuthMySQLPwEncryption none | crypt | scrambled | md5 | aes | sha1
  The encryption type used for the passwords in AuthMySQLPasswordField:
    none: not encrypted (plain text)
    crypt: UNIX crypt() encryption
    scrambled: MySQL PASSWORD encryption
    md5: MD5 hashing
    aes: Advanced Encryption Standard (AES) encryption
    sha1: Secure Hash Algorihm (SHA1)

  WARNING: When using aes encryption, the password field MUST be a BLOB type
  (i.e.  TINYBLOB).  MySQL will strip trailing x'20' characters (blanks), EVEN
  IF THE COLUMN TYPE IS BINARY!

AuthMySQLSaltField <> | <string> | mysql_column_name

  Contains information on the salt field to be used for crypt and aes
  encryption methods.  It can contain one of the following:
    <>: password itself is the salt field (use with crypt() only)
    <string>: "string" as the salt field
    mysql_column_name: the salt is take from the mysql_column_name field in the
      same row as the password

  This field is required for aes encryption, optional for crypt encryption.
  It is ignored for all other encryption types.

答案 1 :(得分:0)

modauthmysql似乎没有看到任何开发者的爱超过7年。我目前对您的问题的猜测是由于您使用的apache 2.2导致的一些不兼容问题。

在仔细研究了如何解决同样的问题后,我遇到了这个文档: http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html

如果您使用其所有选项正确配置它,这似乎能够做您想要的。

答案 2 :(得分:0)

在/usr/share/doc/libapache2-mod-auth-mysql/DIRECTIVES.gz中查找指令

路径应该特定于您的系统,上面的那个是Debian Lenny