gpt4 book ai didi

java - Bcrypt 自定义密码配置

转载 作者:行者123 更新时间:2023-12-02 01:31:57 25 4
gpt4 key购买 nike

我正在更改密码,然后转发到/loginuser 并重定向到用户仪表板。因为我是初学者,所以我已经使用 httpbasic 身份验证来确保这一点,我在 hibernate 中使用 createNativeSQLQuery 并从数据库中获取结果。我是否必须实现任何 UserDetailsS​​ervice 接口(interface) Spring Security?我的目标是仅实现加密密码并将其存储在数据库中。我面临的问题是,我添加了一个 bean 配置,例如,

@Bean
public PasswordEncoder customPasswordEncoder() {
return new BCryptPasswordEncoder(){
@Override
public String encode(CharSequence rawPassword) {
return BCrypt.hashpw(rawPassword.toString(), BCrypt.gensalt(4));
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return BCrypt.checkpw(rawPassword.toString(), encodedPassword);
}
};
}

我不知道为什么它会抛出这个异常。我们应该对盐轮进行硬编码吗?

java.lang.IllegalArgumentException: Invalid salt
at org.springframework.security.crypto.bcrypt.BCrypt.hashpw(BCrypt.java:552) ~[spring-security-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.security.crypto.bcrypt.BCrypt.checkpw(BCrypt.java:659) ~[spring-security-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at com.bootapp.FullTimeEquivalents.config.PasswordEncoderConfig$1.matches(PasswordEncoderConfig.java:29) ~[classes/:na]

最佳答案

我认为您遇到了问题,因为您的编码密码的长度 < 28,来自 Spring 的来源:

if (saltLength < 28) {
throw new IllegalArgumentException("Invalid salt");
}

如何解决这个问题:

  1. 将盐轮数增加到 10
  2. 尝试将最小密码长度设置为 4-5

希望对您有所帮助。

关于java - Bcrypt 自定义密码配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57551119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com