Php 将sha512转换为md5

Php 将sha512转换为md5,php,mysql,hash,md5,sha512,Php,Mysql,Hash,Md5,Sha512,在Multicraft面板中使用SHA512作为加密(您可以更改MD5的设置),但我需要使用同一数据库的旧版本。这个旧版本没有使用SHA512加密的选项,但只能使用MD5。因此,所有密码对于MD5都是无效的 可以将MySQL数据库中的所有SHA512密码转换为MD5吗?SHA512和MD5是加密算法,而不是加密算法。根据设计,它们是不可逆的 转换这些值的唯一方法是等待每个用户登录,根据现有SHA512哈希验证他们的密码,并使用MD5重新刷新他们的输入。这与密码哈希更新为更安全标准的方式相反 但是

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

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

SHA512和MD5是加密算法,而不是加密算法。根据设计,它们是不可逆的

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

但是请不要这样做。。从SHA512恢复到MD5会给用户带来巨大的伤害。找到一种使用较新版本软件的方法


正如zaph在一篇评论中所指出的,“重新设置”过于简单化,根据您的面板的实际实现方式,它今天可能使用了不安全的密码存储

为了提供合理的安全性,每个密码还必须具有唯一的随机性(可以防止类似的情况),并且每个哈希必须迭代足够多的时间,以使其不实用。随着计算机越来越强大,迭代次数必须增加。今天,迭代数万次或数十万次是很常见的

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

简短回答:否

长答覆:

根据设计,MD5和SHA512都是单向散列。为了将SHA512转换为MD5,您需要知道要转换的每个密码的原始密码,以及用于加密密码的salt。您几乎肯定不会知道每个用户的每个密码

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


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

SHA-512仍然不能提供可接受的安全性,额外的安全性是最低限度的。仅仅使用散列函数是不够的,仅仅添加一个salt对提高安全性几乎没有作用。取而代之的是,在HMAC上随机添加盐,持续约100毫秒,并将盐与散列一起保存。使用诸如password_hash、PBKDF2、Bcrypt等函数和类似函数。关键是让攻击者花费大量时间用暴力寻找密码。@zaph,当然了。但是OP并没有询问如何安全地实现密码哈希。问题是现有的基于SHA512的散列是否可以转换为基于MD5的散列,以便与第三方程序一起使用。实际的答案是否定的。我当然希望所使用的软件是使用从公开审核的库中精心选择的算法正确实现的,但如果归结为图形面板中的设置更改,我不确定这些细节是否相关。无论如何,我已经对你的评论投了赞成票,并将在我的回答中添加一个注释。执行时间延长1.5倍并不是“安全性差得多”,我只是在2.3 GHz Intel Core i7笔记本电脑上运行了一些基准测试。密码哈希被经常使用的密码列表打破,SHA-512将使攻击者花费额外的50%时间。当然,SHA-512是一个更好的散列函数,但在这种用法中,这并不重要。有关如何处理密码的详细信息,请参阅对@Chris的评论。请参阅Security Stackexchange上的。请参阅OWASP(开放式Web应用程序安全项目)。看,正是用户面临着密码处理不善的风险,他们期望并应该得到良好的安全性。我不知道为什么这一点被否决得如此糟糕。我不建议做OP想要做的事情,但在我看来,这是一个关于这个主题的有效问题,并且是可以明确回答的。