【发布时间】: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