Php 使用blowfish加密验证MySQL

Php 使用blowfish加密验证MySQL,php,mysql,authentication,webdav,virtualhost,Php,Mysql,Authentication,Webdav,Virtualhost,我将我的用户名和密码存储在带有河豚加密的mysql数据库中。 在php中,我可以像这样加密密码: crypt($pwd, _SALT_) 其中$pwd='userpwd'和\u SALT=$2a$07… 我正在寻找一种在虚拟主机中通过mod\u auth\u mysql使用用户表的方法。我知道md5可以使用Auth\u MySQL\u Encryption\u type PHP\u md5,但我更愿意使用blowfish 我如何告诉mysql_auth使用河豚?我在哪里进盐 编辑: 这里的基本

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

crypt($pwd, _SALT_)
其中
$pwd='userpwd'
\u SALT=$2a$07…

我正在寻找一种在虚拟主机中通过
mod\u auth\u mysql
使用用户表的方法。我知道md5可以使用
Auth\u MySQL\u Encryption\u type PHP\u md5
,但我更愿意使用blowfish

我如何告诉mysql_auth使用河豚?我在哪里进盐

编辑:

这里的基本问题是,我必须在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
...
停止apache对语法的抱怨。有人能告诉我为什么或者告诉我
AuthMySQLSaltField

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

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

AuthMySQLPwEncryption crypt

AuthmysqlpEncryption none | crypt |扰码| md5 | aes | sha1
AuthMySQLPasswordField中用于密码的加密类型:
无:未加密(纯文本)
crypt:UNIX crypt()加密
加扰:MySQL密码加密
md5:md5哈希
高级加密标准(aes)加密
sha1:安全哈希算法(sha1)
警告:使用aes加密时,密码字段必须为BLOB类型
(即TINYBLOB)。MySQL将删除尾随的x'20'字符(空格),甚至
如果列类型是二进制的!
AuthMySQLSaltField | | mysql|列_名称
包含用于地下室和aes的盐场信息
加密方法。它可以包含以下内容之一:
:密码本身是salt字段(仅与crypt()一起使用)
:“字符串”作为盐场
mysql\u column\u name:salt取自
与密码相同的行
aes加密需要此字段,加密可选。
对于所有其他加密类型,它将被忽略。
使用

AuthmysqlpEncryption none | crypt |扰码| md5 | aes | sha1
AuthMySQLPasswordField中用于密码的加密类型:
无:未加密(纯文本)
crypt:UNIX crypt()加密
加扰:MySQL密码加密
md5:md5哈希
高级加密标准(aes)加密
sha1:安全哈希算法(sha1)
警告:使用aes加密时,密码字段必须为BLOB类型
(即TINYBLOB)。MySQL将删除尾随的x'20'字符(空格),甚至
如果列类型是二进制的!
AuthMySQLSaltField | | mysql|列_名称
包含用于地下室和aes的盐场信息
加密方法。它可以包含以下内容之一:
:密码本身是salt字段(仅与crypt()一起使用)
:“字符串”作为盐场
mysql\u column\u name:salt取自
与密码相同的行
aes加密需要此字段,加密可选。
对于所有其他加密类型,它将被忽略。

modauthmysql似乎已经7年多没有看到任何开发者的喜爱了。我目前对您的问题的猜测是,这会导致您使用的Apache2.2出现一些不兼容问题

在仔细研究如何解决同一问题后,我发现了以下文档:


只要您正确配置它的所有选项,它似乎可以做您想要做的事情。

modauthmysql似乎已经有7年多没有受到任何开发人员的喜爱了。我目前对您的问题的猜测是,这会导致您使用的Apache2.2出现一些不兼容问题

在仔细研究如何解决同一问题后,我发现了以下文档:


只要您正确配置它的所有选项,它似乎可以做您想要的事情。

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


路径应该特定于您的系统,上面的路径是针对Debian Lenny的,请在/usr/share/doc/libapache2 mod auth mysql/DIRECTIVES.gz中查找该指令


路径应该是特定于您的系统的,上面的路径是针对Debian Lenny的,问题是,apache抱怨语法,所以我不得不使用(Auth_MySQL on;Auth_MySQL_Authority on;…)[使用''.']。所以AuthMySQLSaltField不起作用了。我还试过Auth_MySQL_SaltField;Auth_MySQL_Salt_Field,…嗯,问题是,apache抱怨语法,所以我不得不使用(Auth_MySQL on;Auth_MySQL_authoritive on;…)[使用''.']。所以AuthMySQLSaltField不起作用了。我还试过Auth_MySQL_SaltField;Auth_MySQL_Salt_Field,…因为apache正在抱怨。。。您有哪一个确切的apache版本?可能您得到的确切错误是什么(粘贴)?“无效命令'AuthMySQLDB',可能拼写错误或由服务器配置中未包含的模块定义”服务器版本:Apache/2.2.14(Ubuntu),因为Apache正在抱怨。。。您有哪一个确切的apache版本?也许你得到的确切错误是什么(粘贴)?“无效的命令'AuthMySQLDB',可能拼写错误或由服务器配置中未包含的模块定义”服务器版本:Apache/2.2.14(Ubuntu)很抱歉,但我仍然无法弄清楚:我必须告诉哪里(SQL语句?)才能用blowfish加密传入的pasword(输入我的$2$…salt)很抱歉,我在Apache和Mysql方面都做了更多的研究。Blowfish是不可能的。DES和AES或标准CRYPT以一种或另一种形式提供,当然还有SHA1和MD5散列,但Blowfish似乎在这些系统中未被使用。我还没有详细研究它,但可能是
AuthMySQLPwEncryption crypt
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.