What function to use to hash passwords in MySQL?

前端 未结 5 2000
忘了有多久
忘了有多久 2020-12-19 00:53

I have a user table in my mysql database that has a password column. Currently, I use the MD5 algorithm to hash the users\' password for storage in the database. Now I like

5条回答
  •  情深已故
    2020-12-19 01:44

    It's not necessarily that you shouldn't use MD5, as much it's that you shouldn't use just MD5, as this leaves you vulnerable to rainbow-table attacks (a rainbow table is a table of precomputed hash values - if your password is even remotely common or simple, the attacker needs merely to look up the hash and he knows your plaintext password.)

    At the very least you should add a salt to every password so that any existing rainbow table is useless, forcing the attacker to generate an entire new rainbow table just for your database of passwords.

    Better still is to use a different salt for every password in your database, say the username it's associated with, so that an attacker can't even generate a rainbow table for your whole database and has to crack each entry separately.

    MD5 is also a very fast algorithm. Speed is the enemy when it comes to cracking - the longer it takes to generate a hash, the longer it takes for each attempt a hacker makes. Something simple like hashing the plaintext 100 times with a new additional salt each time would be barely perceptible (if at all) to a user logging in to your site, but it would increase the time it takes to brute-force a password by the same 100 times.

    Far, far more detail here: http://www.codinghorror.com/blog/archives/000953.html

提交回复
热议问题