升级spring安全密码编码器

ca1c2owp  于 2021-09-30  发布在  Java
关注(0)|答案(1)|浏览(294)

升级自:

import org.springframework.security.authentication.encoding.PasswordEncoder;

    @Override
    public String encodePassword(String plainPassword, Object salt) {
        final String finalSalt = salt != null ? salt.toString() : "";
        return DigestUtils.md5Hex(finalSalt + plainPassword);
    }

    @Override
    public boolean isPasswordValid(String encodedPassword, String plainPassword, Object salt) {
        final String enteredPassword = encodePassword(plainPassword, salt);
        return encodedPassword.equals(enteredPassword);
    }

致:

import org.springframework.security.crypto.password.PasswordEncoder;

    @Override
    public String encode(CharSequence rawPassword) {
      final String finalSalt = salt != null ? salt.toString() : "";
      return DigestUtils.md5Hex(finalSalt + plainPassword);
    }

    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
       final String enteredPassword = encodePassword(plainPassword, salt);
       return encodedPassword.equals(enteredPassword);
    }

不知道该怎么办 salt ?
我不知道我是否可以转换 rawPasswordString 取代 plainPassword ?

vnjpjtjt

vnjpjtjt1#

新方法期望salt是编码密码的一部分。根据 PasswordEncoder.encoder() javadoc:
对原始密码进行编码。一般来说,一个好的编码算法应用sha-1或更大的哈希值与一个8字节或更大的随机生成的salt相结合。
如果你看这个答案,它说明了 BCryptPasswordEncoder 在编码的密码中对salt进行编码。这里解释了实际的bcrypt编码密码格式。

相关问题