在MySql中存储字符串的散列值

时间:2011-12-20 11:45:54

标签: mysql

我正在开发一个必须具有身份验证(用户名/密码)的项目

它还连接到数据库,所以我想我会在那里存储用户名和密码,但是将密码只作为坐在数据库中的表中的文本字段似乎不是一个好主意。 我正在使用mysql数据库。

我在DB中的表:

                    +------------+-------------+------+-----+---------+-------+
                    | Field      | Type        | Null | Key | Default | Extra |
                    +------------+-------------+------+-----+---------+-------+
                    | username   | varchar(20) | NO   | PRI |         |       |
                    | password   | varchar(15) | YES  |     | NULL    |       |
                    | email      | varchar(50) | YES  |     | NULL    |       |
                    | cfmpwd     | varchar(15) | YES  |     | NULL    |       |
                    | firstname  | varchar(15) | YES  |     | NULL    |       |
                    | lastname   | varchar(15) | YES  |     | NULL    |       |
                    | identifier | varchar(20) | YES  |     | NULL    |       |
                    | company    | varchar(20) | YES  |     | NULL    |       |
                    | address    | varchar(50) | YES  |     | NULL    |       |
                    | address1   | varchar(20) | YES  |     | NULL    |       |
                    | city       | varchar(15) | YES  |     | NULL    |       |
                    | state      | varchar(25) | YES  |     | NULL    |       |
                    | zip        | varchar(20) | YES  |     | NULL    |       |
                      country    | varchar(20) | YES  |     | NULL    |       |
                    | mobno      | varchar(20) | YES  |     | NULL    |       |
                    | telno      | varchar(20) | YES  |     | NULL    |       |
                      fax        | varchar(20) | YES  |     | NULL    |       |
                    +------------+-------------+------+-----+---------+------

谢谢。

1 个答案:

答案 0 :(得分:0)

根据您要使用的散列方法,唯一的变化是将password长度从15(如现在)扩展到例如100:

ALTER TABLE  `your_table` CHANGE  `password`  `password` VARCHAR( 100 ) DEFAULT NULL

如果您现在将密码存储为纯文本,则还需要运行一个脚本来散列每个密码并将更改保存在数据库中。