簡體   English   中英

升級 Spring 安全密碼編碼器

[英]Upgrading Spring Security PasswordEncoder

升級自:

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);
    }
  1. 不知道如何處理salt
  2. 不確定我是否可以將rawPassword轉換為String來替換plainPassword

新方法期望鹽是編碼密碼的一部分。 根據PasswordEncoder.encoder() javadoc

對原始密碼進行編碼。 通常,一個好的編碼算法應用 SHA-1 或更大的 hash 結合 8 字節或更大的隨機生成的鹽。

如果您查看此答案,它會顯示BCryptPasswordEncoder如何在編碼密碼中編碼鹽。 此處解釋了實際的 BCrypt 編碼密碼格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM