我知道旧的mysql密码功能(4.1之前的版本)被认为是不安全的,但是我不确定为什么.被视为不安全的具体原因是什么?
解决方法:
根据MySQL docs on password hashing:
The password hashing mechanism was updated in MySQL 4.1 to provide
better security and to reduce the risk of passwords being intercepted.
我不确定这是否意味着“降低密码被拦截的风险”是否意味着其他任何东西,或者只是意味着它们更难破解,但主要区别在于生成的哈希值的大小.
在4.1之前,哈希大小为16个字节.
从4.1开始,哈希大小为41字节(* 40字节).
相对于较大的哈希函数,16字节的哈希值非常小,并且很容易找到冲突.通常认为MD5的强度不足,它的产量是32字节的两倍.相比之下,16个字节基本上是可悲的.为了比较:
pre-4.1 MySQL PASSWORD: 16 bytes
MD5: 32 bytes
SHA 1: 40 bytes
4.1+ MySQL PASSWORD: 41 bytes (40 bytes, prepended with an asterisk)
SHA-256: 64 bytes
SHA-512: 128 bytes
新的密码散列方案与SHA-1相提并论,SHA-1稍好于MD5,但强度不足以推荐使用密码.