我有一点困境。我的 mysql 4.1.0 数据库必须升级(1and1),但似乎应用程序使用 PASSWORD() 进行散列。使用 mysql 5 升级 PASSWORD() 给出完全不同的结果,因为密码无法正确读取和验证。
OLD_PASSWORD() 似乎没有加密/解密到 4.1.0 版本,而是更早的 4.0。
我能做些什么?
我有一点困境。我的 mysql 4.1.0 数据库必须升级(1and1),但似乎应用程序使用 PASSWORD() 进行散列。使用 mysql 5 升级 PASSWORD() 给出完全不同的结果,因为密码无法正确读取和验证。
OLD_PASSWORD() 似乎没有加密/解密到 4.1.0 版本,而是更早的 4.0。
我能做些什么?
“出于兼容性目的,添加了 old_passwords 系统变量,以使 DBA 和应用程序能够控制散列方法。默认 old_passwords 值 0 会导致散列使用 4.1 方法(41 字节散列值),但设置 old_passwords=1 会导致散列以使用 4.1 之前的方法。在这种情况下,PASSWORD() 产生 16 字节的值,相当于 OLD_PASSWORD()"
我建议强制每个人创建一个新密码,通过电子邮件和随机密钥进行验证,然后用一种好的方法存储新密码(使用 PHPass 之类的东西,或者至少使用带盐的 bcrypt)。