0

我无法将保存在 MySQL 中的电子邮件用户帐户转移到另一台服务器。这是详细信息:

我有一个旧的电子邮件服务器,它使用 MySQL 来存储用户帐户信息。密码字段使用 MySQL ENCRYPT 函数来保存用户密码。因此,如果我想更改用户密码,我可以这样做:

 UPDATE  `mail`.`users` SET  `password` = ENCRYPT(  '12345' ) WHERE CONVERT(  `users`.`email` USING utf8 ) =  'g@veecall.com' LIMIT 1 ;

然后将新密码“12345”作为字符串“2I6JOeg.JukJ”保存在表中。

现在我使用 iRedMail 构建了一个新服务器。当我尝试转移用户帐户时,我无法转移密码字段。因为 iRadMail/dovecot 使用 MD5-CRAM 加密密码,然后将其保存在 MySQL 中。所有密码字符串都以“$1$”开头。

那么,有没有办法让 MySQL 加密的密码字符串为“2I6JOeg.JukJ”。转换为 MD5 哈希“$1$........”?

感谢帮助。

4

1 回答 1

1

首先 MD5 是一种散列算法而不是加密算法。其主要原因是,从 MD5 生成的哈希值计算出原始密码几乎是不可能的。MD5 创建一个哈希值,它基本上是一个陷门函数,换句话说,它是一个单向函数。

如果您知道密钥,加密将允许您加密和解密。巨大差距。希望你明白这一点。

现在解决你的问题。

除非您在加密之前拥有原始密码,否则除了蛮力创建密码的 MD5 等效项之外,没有其他合理的方法。加密密码散列和未加密/纯文本密码散列将是两种不同的想法。

如果您可以将当前拥有的所有密码解密为纯文本形式,则可以对纯文本值执行 MD5 散列。如果您无法获得原始纯文本,那么您就不走运了。

于 2013-07-18T22:30:29.480 回答