希望创建一个保存用户信息(主要是用户和密码)的数据库表。
登录不是问题,问题是如何关联表(密码表和每个用户的数据表)
由于
答案 0 :(得分:3)
答案 1 :(得分:1)
您应该在存储密码之前对密码进行哈希处理。理想情况下,使用独特的盐。
作为哈希函数,您不应该使用像SHA- *之类的东西,因为加密哈希函数的设计速度很快。这使得获取哈希的人很容易以非常快的速度尝试大量可能的密码。
使用bcrypt之类的密码哈希函数,该函数设计为任意慢。
答案 2 :(得分:0)
登录不是问题所在 问题是关联表 (密码表和数据表 为每个用户)
要关联表,您可以使用关系:
答案 3 :(得分:0)
我会将哈希和盐渍密码与其他用户数据一起存储在表中。如果您确实希望将密码存储在单独的表中,则存储用户ID以将密码与用户关联。通常使用强散列算法,例如SHA251和salt密码以防止彩虹表攻击。我认为您不应该使用用户名哈希。
答案 4 :(得分:0)
正如我上面评论的那样,我只是哈希密码。
另外,为什么要将用户和密码存储在单独的表中?它们是相关的,应该在同一个表中。地址等数据属于单独的表格。
答案 5 :(得分:0)
如果绝对必须有两个表,一个使用散列/加密密码,另一个使用用户信息,则可以使用代理键来执行表之间的关系。
你可以这样设置:
CREATE TABLE users (USER_ID INTEGER,
PASSWORD_ID INTEGER,
USER_ATTRIBUTE VARCHAR(30));
CREATE TABLE passwords (PASSWORD_ID INTEGER,
PASSWORD_HASH VARCHAR(255));
PASSWORD_ID是代理键,您可以在users表中使用它来引用密码表中的值。您可以将表与SQL查询一起连接:
SELECT *
FROM users INNER JOIN passwords
ON users.PASSWORD_ID = passwords.PASSWORD_ID;