将sha512转换为md5

时间:2016-08-19 03:20:47

标签: php mysql hash md5 sha512

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

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

2 个答案:

答案 0 :(得分:5)

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

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

但请,不要这样做。 MD5 is hopelessly broken。您将为您的用户提供巨大的服务,以便从SHA512恢复到MD5。找到一种方法来使用较新版本的软件。

¹据zaph在评论中指出,“重组”过于简单化,根据您的面板实际实施情况,今天可能会使用不安全的密码存储。

为了提供合理的安全性,每个密码还必须具有唯一的随机salt(可防止rainbow tables之类的内容),并且必须对每个哈希进行足够的迭代以使brute forcing不切实际。随着计算机变得越来越强大,必须增加迭代次数。今天,通常会迭代数十或数十万次。

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

答案 1 :(得分:2)

简短回答:不。

答案很长:

按照设计,MD5和SHA512都是单向哈希。为了将SHA512转换为MD5,您需要知道两个您尝试转换的每个密码的原始密码,用于加密它们的盐。您几乎肯定不会知道每个用户的每个密码。

单向哈希通过每次用户登录时实际投射相同的算法来工作。用户输入密码,算法应用于它,如果它与已经被哈希的数据库中的副本完全匹配,然后用户登录。您不能使用任何类型的算法来计算原始密码是什么,只是比较应用特定密码的输出是否已经加密的密码。

MD5也是远比更弱的散列算法,而不是SHA512。转换为MD5会使您的密码不那么安全,这可能是您可能不想做的事情。相反,您应该考虑一种合并新数据库系统的方法。