gpt4 book ai didi

mysql - ProFTPD 如何读取使用 MySQL ENCRYPT() 函数加密的密码?

转载 作者:可可西里 更新时间:2023-11-01 07:37:24 27 4
gpt4 key购买 nike

我已经设置了 ProFTPD,以便它使用 mod_sql_mysql 后端。在我将用户插入 SQL 数据库之前,一切正常。为此,我使用了以下查询:

INSERT INTO `auth`.`users` (`userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`)
VALUES ('username', ENCRYPT('bluefish'), '999', '999', '/dev/zero', '/bin/laden');

我可以很好地登录我的帐户,但我真的不明白 ProFTPD 如何读取加密密码 “bluefish”,因为如果没有提供盐,MySQL 会使用随机盐。每次 ProFTPD 使用 MySQL 后端检查密码是否与数据库中的一个条目匹配时,这将导致 ENCRYPT('bluefish') 的不同输出。

虽然它工作得很好。 ProFTPD 如何知道使用了什么盐?

最佳答案

ProFTPD 不需要知道盐是什么。

根据 MySQL documentation , ENCRYPT 使用 DES 的 Unix crypt() 实现。正如您所指出的,如果未提供盐,则会选择随机盐。根据man页面:

The returned value points to the encrypted password, a series of 13 printable ASCII characters (the first two characters represent the salt itself).

您可以自己验证这一点,例如运行:

SELECT ENCRYPT ('blowfish');

返回:

201GDb8Aj8RGU

如果你然后运行

select ENCRYPT ('blowfish', '201GDb8Aj8RGU');

您将得到相同的结果 201GDb8Aj8RGU。只有前两个字符用作盐。

如果您提供自己的盐,它会变得更清晰一些,例如:

SELECT ENCRYPT ('blowfish', 'rb');

返回值为:

rbMle0EHJVXcI
^^

您提供的盐现在更加明显。

关于mysql - ProFTPD 如何读取使用 MySQL ENCRYPT() 函数加密的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com