为什么旧的mysql密码功能被认为不安全

我知道旧的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,但强度不足以推荐使用密码.

上一篇:为安全起见,将新的String(char [])作为密码的参数传递给仅接受字符串作为参数的方法是否安全?


下一篇:在Android应用中对哈希密码进行哈希处理的好方法有哪些?