【发布时间】:2016-10-02 11:05:03
【问题描述】:
我在这里使用一个遗留代码库,目前使用OLD_PASSWORD() 作为一个简单的散列函数。此代码库现在需要连接到运行最新版本 MySQL 5.7 的数据库。
PASSWORD() 的等价物似乎是:UPPER(SHA1(UNHEX(SHA1(password))))。
是否有与OLD_PASSWORD()类似的等价物?
【问题讨论】:
-
使用
OLD_PASSWORD()进行用户身份验证是一个糟糕的主意,因此如果您可以将其替换为真正安全的东西,您的状态会好得多。OLD_PASSWORD()只是未加盐的 MD5 吗?你可以做测试来找出答案。如果是的话,就保护而言完全没有用。 -
我很清楚它不安全。正如我所说,这是一个遗留代码库。目前我无法控制改变。
OLD_PASSWORD()似乎返回了一个减半的 MD5 字符串(16 个字符),但实际上并非如此。 -
我找到了A python implementation of the old MySQL PASSWORD() function。我不会说一个 Python 单词,但算法看起来很荒谬。
-
强制人们每 20 年更新一次密码并不一定是个坏主意。
-
@DanFromGermany 是的,它从 5.7.5 版开始被删除。如果 Google Cloud SQL 提供 MariaDB,我们肯定会选择它。