返回列表 上一筆 下一筆

目前格式:HTML/XML

🧾 資料內容 (HTML/XML)

Step-by-step Debug Checklist

✅ 1. 你是否有引入依賴?

xml

複製

編輯

<dependency>

  <groupId>com.github.ulisesbocchio</groupId>

  <artifactId>jasypt-spring-boot-starter</artifactId>

  <version>3.0.3</version>

</dependency>

✅ 必須是 starter,不是 core。



🔥 確保 沒有重複或衝突版本(執行 mvn dependency:tree 看)。



✅ 2. 你有設置密碼?

至少以下其一必須存在,否則 Jasypt 不工作:



✅ JVM 參數

bash

複製

編輯

-Djasypt.encryptor.password=your-password

✅ 或 application.yml

yaml

複製

編輯

jasypt:

  encryptor:

    password: your-password

✅ 3. 密文格式正確?

yaml

複製

編輯

myapp:

  secret: ENC(7iUgL7dM8XK0cFw34kavLw==)

ENC(...) 是 唯一能被 Jasypt 自動辨識 的格式



沒有 ENC(...) → 不會處理



空格、換行、缺少 ) 都會失敗



✅ 4. 有沒有自定義 Encryptor Bean?

如果你自己定義了這個:



java

複製

編輯

@Bean(name = "jasyptStringEncryptor")

public StringEncryptor stringEncryptor() {

    ...

}

請檢查:



Bean 名稱一定要是 "jasyptStringEncryptor"



算法、password 設定要正確



如果你用的是 @ConditionalOnMissingBean,確保沒被略過



✅ 5. 你使用的 profile/resource filter 正確嗎?

application-${profile}.yml 有包含進打包過程嗎?



filtering 開啟後 ${} 會被處理,但 @xxx@ 需要 maven-resource-plugin filter 支援



✅ 6. 你的密文是否與 algorithm/password 一致?

如果你先用 algorithm = PBEWithMD5AndDES 加密



然後改成 PBEWITHSHA256AND128BITAES-CBC-BC → ❌ 解不開



✅ 建議你用 相同邏輯加密後再測試(可用 Java 或 CLI 工具產生密文)



✅ 7. 密文不是 Base64 嗎?為什麼沒有 ==?

沒有 == 不代表錯



Base64 尾端 = 只是 padding,取決於加密結果長度



重點是:解密正常就好,不要拿 == 當依據



✅ 8. 是否有排除 YAML 的 decrypt?

jasypt-spring-boot-starter 預設會處理 所有配置屬性,

包括:



.properties



.yml



@Value / @ConfigurationProperties



除非你用了特殊 profile 或類似以下排除:



yaml

複製

編輯

jasypt:

  encryptor:

    property:

      prefix: ENC(

      suffix: )

🧪 附加測試工具

如你想「線下測試」密碼是否正確,可以用以下程式加密:



java

複製

編輯

public static void main(String[] args) {

    PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();

    SimpleStringPBEConfig config = new SimpleStringPBEConfig();

    config.setPassword("your-password");

    config.setAlgorithm("PBEWithMD5AndDES");

    config.setStringOutputType("base64");

    encryptor.setConfig(config);



    String plaintext = "my-secret";

    String encrypted = encryptor.encrypt(plaintext);

    System.out.println("ENC(" + encrypted + ")");

}

✅ 推薦檢查順序

有沒有 starter?



密文有沒有 ENC(...)?



密碼傳入了嗎(JVM 或 YAML)?



是否有自定義錯誤的 encryptor bean?



profile 資源是否被正確載入?



算法與密碼是否匹配?

🔐 Base64 編碼內容

U3RlcC1ieS1zdGVwIERlYnVnIENoZWNrbGlzdAoK4pyFIDEuIOS9oOaYr+WQpuacieW8leWFpeS+neiztO+8nwoKeG1sCgropIfoo70KCue3qOi8rwoKPGRlcGVuZGVuY3k+CgogIDxncm91cElkPmNvbS5naXRodWIudWxpc2VzYm9jY2hpbzwvZ3JvdXBJZD4KCiAgPGFydGlmYWN0SWQ+amFzeXB0LXNwcmluZy1ib290LXN0YXJ0ZXI8L2FydGlmYWN0SWQ+CgogIDx2ZXJzaW9uPjMuMC4zPC92ZXJzaW9uPgoKPC9kZXBlbmRlbmN5PgoK4pyFIOW/hemgiOaYryBzdGFydGVy77yM5LiN5pivIGNvcmXjgIIKCgoK8J+UpSDnorrkv50g5rKS5pyJ6YeN6KSH5oiW6KGd56qB54mI5pys77yI5Z+36KGMIG12biBkZXBlbmRlbmN5OnRyZWUg55yL77yJ44CCCgoKCuKchSAyLiDkvaDmnInoqK3nva7lr4bnorzvvJ8KCuiHs+WwkeS7peS4i+WFtuS4gOW/hemgiOWtmOWcqO+8jOWQpuWJhyBKYXN5cHQg5LiN5bel5L2c77yaCgoKCuKchSBKVk0g5Y+D5pW4CgpiYXNoCgropIfoo70KCue3qOi8rwoKLURqYXN5cHQuZW5jcnlwdG9yLnBhc3N3b3JkPXlvdXItcGFzc3dvcmQKCuKchSDmiJYgYXBwbGljYXRpb24ueW1sCgp5YW1sCgropIfoo70KCue3qOi8rwoKamFzeXB0OgoKICBlbmNyeXB0b3I6CgogICAgcGFzc3dvcmQ6IHlvdXItcGFzc3dvcmQKCuKchSAzLiDlr4bmlofmoLzlvI/mraPnorrvvJ8KCnlhbWwKCuikh+ijvQoK57eo6LyvCgpteWFwcDoKCiAgc2VjcmV0OiBFTkMoN2lVZ0w3ZE04WEswY0Z3MzRrYXZMdz09KQoKRU5DKC4uLikg5pivIOWUr+S4gOiDveiiqyBKYXN5cHQg6Ieq5YuV6L6o6K2YIOeahOagvOW8jwoKCgrmspLmnIkgRU5DKC4uLikg4oaSIOS4jeacg+iZleeQhgoKCgrnqbrmoLzjgIHmj5vooYzjgIHnvLrlsJEgKSDpg73mnIPlpLHmlZcKCgoK4pyFIDQuIOacieaykuacieiHquWumue+qSBFbmNyeXB0b3IgQmVhbu+8nwoK5aaC5p6c5L2g6Ieq5bex5a6a576p5LqG6YCZ5YCL77yaCgoKCmphdmEKCuikh+ijvQoK57eo6LyvCgpAQmVhbihuYW1lID0gImphc3lwdFN0cmluZ0VuY3J5cHRvciIpCgpwdWJsaWMgU3RyaW5nRW5jcnlwdG9yIHN0cmluZ0VuY3J5cHRvcigpIHsKCiAgICAuLi4KCn0KCuiri+aqouafpe+8mgoKCgpCZWFuIOWQjeeoseS4gOWumuimgeaYryAiamFzeXB0U3RyaW5nRW5jcnlwdG9yIgoKCgrnrpfms5XjgIFwYXNzd29yZCDoqK3lrpropoHmraPnoroKCgoK5aaC5p6c5L2g55So55qE5pivIEBDb25kaXRpb25hbE9uTWlzc2luZ0JlYW7vvIznorrkv53mspLooqvnlaXpgY4KCgoK4pyFIDUuIOS9oOS9v+eUqOeahCBwcm9maWxlL3Jlc291cmNlIGZpbHRlciDmraPnorrll47vvJ8KCmFwcGxpY2F0aW9uLSR7cHJvZmlsZX0ueW1sIOacieWMheWQq+mAsuaJk+WMhemBjueoi+WXju+8nwoKCgpmaWx0ZXJpbmcg6ZaL5ZWf5b6MICR7fSDmnIPooqvomZXnkIbvvIzkvYYgQHh4eEAg6ZyA6KaBIG1hdmVuLXJlc291cmNlLXBsdWdpbiBmaWx0ZXIg5pSv5o+0CgoKCuKchSA2LiDkvaDnmoTlr4bmlofmmK/lkKboiIcgYWxnb3JpdGhtL3Bhc3N3b3JkIOS4gOiHtO+8nwoK5aaC5p6c5L2g5YWI55SoIGFsZ29yaXRobSA9IFBCRVdpdGhNRDVBbmRERVMg5Yqg5a+GCgoKCueEtuW+jOaUueaIkCBQQkVXSVRIU0hBMjU2QU5EMTI4QklUQUVTLUNCQy1CQyDihpIg4p2MIOino+S4jemWiwoKCgrinIUg5bu66K2w5L2g55SoIOebuOWQjOmCj+i8r+WKoOWvhuW+jOWGjea4rOippu+8iOWPr+eUqCBKYXZhIOaIliBDTEkg5bel5YW355Si55Sf5a+G5paH77yJCgoKCuKchSA3LiDlr4bmlofkuI3mmK8gQmFzZTY0IOWXju+8n+eCuuS7gOm6vOaykuaciSA9Pe+8nwoK5rKS5pyJID09IOS4jeS7o+ihqOmMrwoKCgpCYXNlNjQg5bC+56uvID0g5Y+q5pivIHBhZGRpbmfvvIzlj5bmsbrmlrzliqDlr4bntZDmnpzplbfluqYKCgoK6YeN6bue5piv77ya6Kej5a+G5q2j5bi45bCx5aW977yM5LiN6KaB5ou/ID09IOeVtuS+neaTmgoKCgrinIUgOC4g5piv5ZCm5pyJ5o6S6ZmkIFlBTUwg55qEIGRlY3J5cHTvvJ8KCmphc3lwdC1zcHJpbmctYm9vdC1zdGFydGVyIOmgkOioreacg+iZleeQhiDmiYDmnInphY3nva7lsazmgKfvvIwKCuWMheaLrO+8mgoKCgoucHJvcGVydGllcwoKCgoueW1sCgoKCkBWYWx1ZSAvIEBDb25maWd1cmF0aW9uUHJvcGVydGllcwoKCgrpmaTpnZ7kvaDnlKjkuobnibnmroogcHJvZmlsZSDmiJbpoZ7kvLzku6XkuIvmjpLpmaTvvJoKCgoKeWFtbAoK6KSH6KO9Cgrnt6jovK8KCmphc3lwdDoKCiAgZW5jcnlwdG9yOgoKICAgIHByb3BlcnR5OgoKICAgICAgcHJlZml4OiBFTkMoCgogICAgICBzdWZmaXg6ICkKCvCfp6og6ZmE5Yqg5ris6Kmm5bel5YW3CgrlpoLkvaDmg7PjgIznt5rkuIvmuKzoqabjgI3lr4bnorzmmK/lkKbmraPnorrvvIzlj6/ku6XnlKjku6XkuIvnqIvlvI/liqDlr4bvvJoKCgoKamF2YQoK6KSH6KO9Cgrnt6jovK8KCnB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCiAgICBQb29sZWRQQkVTdHJpbmdFbmNyeXB0b3IgZW5jcnlwdG9yID0gbmV3IFBvb2xlZFBCRVN0cmluZ0VuY3J5cHRvcigpOwoKICAgIFNpbXBsZVN0cmluZ1BCRUNvbmZpZyBjb25maWcgPSBuZXcgU2ltcGxlU3RyaW5nUEJFQ29uZmlnKCk7CgogICAgY29uZmlnLnNldFBhc3N3b3JkKCJ5b3VyLXBhc3N3b3JkIik7CgogICAgY29uZmlnLnNldEFsZ29yaXRobSgiUEJFV2l0aE1ENUFuZERFUyIpOwoKICAgIGNvbmZpZy5zZXRTdHJpbmdPdXRwdXRUeXBlKCJiYXNlNjQiKTsKCiAgICBlbmNyeXB0b3Iuc2V0Q29uZmlnKGNvbmZpZyk7CgoKCiAgICBTdHJpbmcgcGxhaW50ZXh0ID0gIm15LXNlY3JldCI7CgogICAgU3RyaW5nIGVuY3J5cHRlZCA9IGVuY3J5cHRvci5lbmNyeXB0KHBsYWludGV4dCk7CgogICAgU3lzdGVtLm91dC5wcmludGxuKCJFTkMoIiArIGVuY3J5cHRlZCArICIpIik7Cgp9CgrinIUg5o6o6Jam5qqi5p+l6aCG5bqPCgrmnInmspLmnIkgc3RhcnRlcu+8nwoKCgrlr4bmlofmnInmspLmnIkgRU5DKC4uLinvvJ8KCgoK5a+G56K85YKz5YWl5LqG5ZeO77yISlZNIOaIliBZQU1M77yJ77yfCgoKCuaYr+WQpuacieiHquWumue+qemMr+iqpOeahCBlbmNyeXB0b3IgYmVhbu+8nwoKCgpwcm9maWxlIOizh+a6kOaYr+WQpuiiq+ato+eiuui8ieWFpe+8nwoKCgrnrpfms5XoiIflr4bnorzmmK/lkKbljLnphY3vvJ8K
返回列表 上一筆 下一筆