BCrypt:有没有办法在数据库中插入已经加密的密码?
BCrypt: Is there a way to insert already encrypted passwords in a database?
我正在使用 Spring 框架 (-> Java) 构建网络应用程序。出于测试原因,我创建了一个用户(通过 SQL 语句)。目前我正在研究密码加密,为此我使用 BCyrptPasswordEncoder。我想知道是否可以使用编码密码创建第一个用户。
换句话说:我可以使用加密密码作为输入,通过 SQL 语句创建新用户吗?如果可以,如何输入加密后的密码?
我试过 {Bcyrpt}[hash],这是我在一些网站上看到的,但似乎没有用...
插入用户(用户名、密码)值('admin'、'passwd')
首先快速澄清一下术语。密码是 "hashed",bcrypt 不是 "encrypted"。这意味着它是一种单向算法(您不能取消哈希值)。
数据库中存储的值是散列值(例如a$Iewuj5kQFVnUaNbb6M0sAu6a1qbc5bqXAuyc.9fF4cR8xxIOhD0Da
)而不是明文密码。
因此,您需要为测试用户做的就是生成一个 bcrypt 散列以放入 INSERT 语句中。 运行 通过 BCryptPasswordEncoder
或使用在线 bcrypt 生成器。
例如:
INSERT INTO USER(USERNAME, PASSWORD) VALUES ('admin', 'a$Iewuj5kQFVnUaNbb6M0sAu6a1qbc5bqXAuyc.9fF4cR8xxIOhD0Da')
您可以在 spring 启动后使用 @PostConstruct
注释调用代码,并使用加密密码添加用户。但我鼓励你只写一个单元测试。 :)
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private UserRepository userRepository;
@PostConstruct
public void addFirstUser(){
User user = new User("email@gmai.com", passwordEncoder.encode("some-password"));
userRepository.save(user);
}
我正在使用 Spring 框架 (-> Java) 构建网络应用程序。出于测试原因,我创建了一个用户(通过 SQL 语句)。目前我正在研究密码加密,为此我使用 BCyrptPasswordEncoder。我想知道是否可以使用编码密码创建第一个用户。
换句话说:我可以使用加密密码作为输入,通过 SQL 语句创建新用户吗?如果可以,如何输入加密后的密码?
我试过 {Bcyrpt}[hash],这是我在一些网站上看到的,但似乎没有用...
插入用户(用户名、密码)值('admin'、'passwd')
首先快速澄清一下术语。密码是 "hashed",bcrypt 不是 "encrypted"。这意味着它是一种单向算法(您不能取消哈希值)。
数据库中存储的值是散列值(例如a$Iewuj5kQFVnUaNbb6M0sAu6a1qbc5bqXAuyc.9fF4cR8xxIOhD0Da
)而不是明文密码。
因此,您需要为测试用户做的就是生成一个 bcrypt 散列以放入 INSERT 语句中。 运行 通过 BCryptPasswordEncoder
或使用在线 bcrypt 生成器。
例如:
INSERT INTO USER(USERNAME, PASSWORD) VALUES ('admin', 'a$Iewuj5kQFVnUaNbb6M0sAu6a1qbc5bqXAuyc.9fF4cR8xxIOhD0Da')
您可以在 spring 启动后使用 @PostConstruct
注释调用代码,并使用加密密码添加用户。但我鼓励你只写一个单元测试。 :)
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private UserRepository userRepository;
@PostConstruct
public void addFirstUser(){
User user = new User("email@gmai.com", passwordEncoder.encode("some-password"));
userRepository.save(user);
}