代码之家  ›  专栏  ›  技术社区  ›  mchiappinam

将sha512转换为md5

  •  -3
  • mchiappinam  · 技术社区  · 8 年前

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

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

    2 回复  |  直到 8 年前
        1
  •  5
  •   Chris    8 年前

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

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

    但请你, ,不要这样做。 MD5 is hopelessly broken 。您将为您的用户 巨大的 无法从SHA512恢复到MD5。请找到使用较新版本软件的方法。


    为了提供合理的安全性,每个密码还必须具有唯一的随机 salt (它可以防止 rainbow tables )并且每个散列必须迭代足够的次数才能 brute forcing 不切实际的随着计算机功能的增强,迭代次数必须增加。如今,迭代数万或数十万次是很常见的。

    加密是 令人震惊地 很难做到正确。与其尝试手动遵循所有最佳实践,不如使用在正确抽象级别上运行并经过安全审核的库和函数。算法类似 bcrypt (通过PHP内置 password_hash

        2
  •  2
  •   Obsidian Age    8 年前

    简短回答:没有。

    详细答案:

    根据设计,MD5和SHA512都是 单向的 哈希值。为了将SHA512转换为MD5,您需要知道 二者都 您尝试转换的每个密码的原始密码,以及 而且 用来加密它们的盐。您几乎肯定不会知道每个用户的每个密码。

    MD5也是一个 较弱的 SHA512的哈希算法。转换为MD5将生成密码 远的 不太安全,这可能是你不想做的。相反,您应该寻找一种合并新数据库系统的方法。