【问题标题】:Recover the passwords created using PASSWORD() in mysql 8恢复在 mysql 8 中使用 PASSWORD() 创建的密码
【发布时间】:2020-03-03 01:52:52
【问题描述】:

我已将现有的MySQL 5.7 系统更新为MySQL 8.0 所有密码均使用 MySQL 的PASSWORD() 函数加密。

PASSWORD() 函数在 MySQL 8.0 中已弃用

如何将旧密码恢复到新系统中?

我可以恢复旧密码吗? 有没有办法将MYSQLhash password转换成另一种加密方式?

【问题讨论】:

  • 好吧,没有本地方法可以找回旧密码,除非你蛮力破解。因为PASSWORD(..) 或多或少地实现为CONCAT('*', UPPER(SHA1(UNHEX(SHA1(..))))),我在我的answer 中解释这是无法逆转的散列..但是由于 SHA1 是一种快速散列算法,因此在现代硬件上暴力破解 geuss 应该不需要很长时间..一些 GPU 破解软件具有自定义模式,您可以使用这些模式并对其进行同样的操作..
  • ... 但是,如果您想尝试在 SQL 中使用 number_generator 别名并暴力破解您的密码哈希,您可以尝试修改我的答案中的 SQL 代码。但是您需要添加(更多)更多CROSS JOIN ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) row<number> 以生成更多数字
  • 然后其他 SQL 需要有一个 PASSWORD(HEX(number_generator.number)) = CONCAT('*', UPPER(SHA1(UNHEX(SHA1( HEX(number_generator.number) ))))) = '<your_hash>' 过滤器才能只选择一个匹配项。如果没有找到,请在上面添加更多以在上面添加以生成更多数字。但有时你会运行由于HEX() 函数的使用而受到限制..
  • Sathiska,请记住,您不应该将此方法用于(桌面/网络)应用程序用户帐户。当您说 “登录帐户” 时,我假设您仍然是谈论 MySQL 用户帐户? ..甚至手册上都说-> 'PASSWORD() 被MySQL Server中的身份验证系统使用;你不应该在自己的应用程序中使用它”
  • “你为什么要“恢复”密码?密码不是这样工作的”确实@NicoHaase 现在听起来PASSWORD() 以不安全的方式用于应用程序用户帐户..我可以理解将旧的 MySQL 用户帐户密码“恢复”到新的 MySQL 服务器。

标签: mysql password-hash


【解决方案1】:

PASSWORD() 函数替换了此代码部分,并按预期工作。

SELECT CONCAT('*', UPPER(SHA1(UNHEX(SHA1('PWD')))))

【讨论】:

    猜你喜欢
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多