在将密码插入数据库之前,我总是在 php(或其他)中对密码进行哈希处理。今天我发现mysql 5.5内置了散列,所以我可以这样做:
+-----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | auto_increment |
| user_uname | varchar(63) | YES | UNI | NULL | |
| user_password | binary(32) | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
--set password
UPDATE users SET user_password=UNHEX(SHA2(CONCAT('username','salt'), 256))\
WHERE user_id = 1;
-- validate password
SELECT (SELECT user_password FROM users WHERE user_id=1) = \
SHA2(CONCAT('username','salt'), 256);
有没有理由这可能是一个坏主意?(无论如何我都不是mysql专家)