密码和密码哈希处理实践java web app
你好,密码和密码哈希处理实践java web app,java,security,passwords,password-hash,Java,Security,Passwords,Password Hash,你好, 我使用纯JDBC用Java创建了一个web应用程序 我有以下体系结构: 域模型-服务层-DAO层 服务层是CRUD操作的中间人 我的用户类具有字段“password”(User.password) 数据库中的我的用户表有列“pass\u hash” 我使用spring.security中的BCrypt,因此不将盐存储为单独的列 问题: 域模型层中需要哪些字段来处理密码?密码字段?密码散列字段?两个领域?还有别的想法吗 在阅读了stack overflow之后,我想到了在创建用户实例时不要
我使用纯JDBC用Java创建了一个web应用程序
我有以下体系结构: 域模型-服务层-DAO层
服务层是CRUD操作的中间人
我的用户类具有字段“password”(User.password)
数据库中的我的用户表有列“pass\u hash”
我使用spring.security中的BCrypt,因此不将盐存储为单独的列 问题:
@Override
public Long create(User user) {
String hashedPassword = BCrypt.hashpw(user.getPassword(),
BCrypt.gensalt(BCRYPT_SALT_LOG_ROUNDS));
user.setPassword(hashedPassword);
return userDao.create(user);
}
@Override
public User read(Long id) {
User user = userDao.read(id);
if (user != null) {
user.setPassword(null);
}
return user;
}
谢谢只需保存BCrypt密码散列,而不是密码本身。我就是这么做的,我在DB中只有“pass\u hash”列。我只保留了散列密码。但是,这是什么意思?我的用户类中需要有两个字段还是只有一个字段?我必须使用哪一层来散列密码?当我从数据库中读取用户记录时,是否应该避免选择密码散列?如果我应该这样做,我该怎么做。注册时,通过BCrypt运行密码,并将散列和用户id一起保存在数据库中。2.登录时,通过BCrypt运行密码,从数据库中的用户id记录中检索哈希值并进行比较。也许您可以很好地告诉我的问题出了什么问题,而不是在没有任何注释的情况下使用“-”