我无法将保存在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 $ .................”?
感谢您的帮助。
答案 0 :(得分:1)
首先,MD5是一种散列算法,而不是加密算法。主要原因是几乎不可能从MD5生成的哈希值计算原始密码。 MD5创建一个哈希值,它基本上是一个陷阱门函数,换句话说它是一个单向函数。
如果您知道密钥,加密将允许您加密和解密。很大的区别。希望你能理解。
现在为您解决问题。
除非您在加密之前拥有原始密码,否则除了强力创建MD5等效密码之外没有合理的方法。加密密码哈希和未加密/纯文本密码哈希将是两种不同的想法。
如果您可以将当前拥有的所有密码解密为纯文本格式,则可以对纯文本值执行MD5哈希处理。如果你不能得到原始的纯文本,那么你就不走运了。