将sha512转换为md5


Convert sha512 to md5

在Multicraft面板中使用SHA512作为加密(您可以更改MD5的设置),但我需要使用相同数据库的旧版本。这个旧版本没有SHA512加密选项,只有MD5加密选项。因此,所有密码在MD5下都是无效的。

有可能将MySQL数据库中的所有SHA512密码转换为MD5?

SHA512和MD5是哈希算法,不是加密算法。按照设计,它们是不可逆转的。

转换这些值的唯一方法是等待每个用户登录,根据现有的SHA512哈希验证他们的密码,并用MD5重新哈希他们的输入。这与将密码哈希更新为更安全标准的方式相反。

但是请,,不要这样做。 MD5被彻底破坏了。从SHA512恢复到MD5,你会给你的用户带来巨大的伤害。想办法使用更新版本的软件。


¹正如zaph在评论中指出的那样,"重新散列"是一种过度简化,并且取决于您的面板实际实现方式,它可能使用不安全的密码存储。

为了提供合理的安全性,每个密码还必须有一个唯一的随机盐(它可以防止彩虹表之类的东西),并且每个哈希必须迭代足够多次以使暴力破解不切实际。随着计算机变得越来越强大,迭代的次数必须增加。今天,迭代数万或数十万次是很常见的。

密码学令人震惊地难以正确。不要尝试手动遵循所有最佳实践,而是使用在正确抽象级别上运行并经过安全性审计的库和函数。像bcrypt这样的算法(通过PHP的内置password_hash函数,目前它是默认算法)将是一个不错的选择。

简短回答:No.

长答:

根据设计,MD5和SHA512都是单向哈希。为了将SHA512转换为MD5,您需要知道您试图转换的每个密码的原始密码,以及用于加密它们的盐。你几乎肯定不可能知道每个用户的密码。

单向哈希的工作原理是每次用户登录时都使用相同的算法。用户输入他们的密码,算法应用于密码,如果密码与数据库中已经散列的副本完全匹配,那么用户就登录了。你不能使用任何类型的算法来计算出原始密码是什么,只能比较应用特定密码的输出是否会与已经加密的密码对应。

MD5也是比SHA512弱得多的散列算法。转换为MD5将使您的密码不那么安全,这可能是您不希望做的事情。相反,您应该寻找一种合并新数据库系统的方法。