Jasypt 介紹
系統中有一些重要的資訊是不能明碼的展示在程式碼中,比如密碼、API 密鑰等,以免被有心人士拿去利用,此時就會需要一個加密的工具。
Jasypt 是一個 Java 的加密Library,它提供簡單易用的API與配置,讓開發者可以在不需要深入了解加密演算法的情況下,也能輕鬆的在程式中實作加密與解密功能。
如何使用 jasypt 加密
在使用 Jasypt 進行加密時,大致流程如下:
- 加密密碼:首先,通過 Jasypt 提供的工具或命令行界面,將需要加密的密碼轉換為加密字串。這個加密字串可以安全地存儲在配置文件中,而不會洩露敏感信息。
- 引入依賴:在 應用程式中,引入 Jasypt 的 dependency,確保應用能夠使用 Jasypt 的加密和解密功能。
- 配置加密字串:將生成的加密字串放入應用的配置文件中,例如 application.properties 或 application.yml。應用在運行時,會自動使用 Jasypt 進行解密,並將解密後的值提供給程式使用。
Step1. 透過 jasypt 加密,取得加密後字串
取得 jasypt 加密後的字串有很多種方式,以下說明三種方式
寫個小程式加密
以下範例是寫在Junit中執行,也可參考部分的sample coder寫在主程式中,執行後會產生出一組加密後字串。
1 | package com.testJasypt.web; |
透過 Command Line 執行 jar 加密
到
.m2
資料夾下找到jasypt library,執行以下指令1
2
3# java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="{原始密碼}" password={加密的密鑰} algorithm={加密的演算法}
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=spring algorithm=PBEWithMD5AndDES執行結果
1
2
3
4
5
6
7
8
9
10
11
12
13----ENVIRONMENT-----------------
Runtime: Oracle Corporation OpenJDK 64-Bit Server VM 15.0.1+9-18
----ARGUMENTS-------------------
input: 123456
password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
algorithm: PBEWithMD5AndDES
----OUTPUT----------------------
YidAq+TOHJ3lCI+SqFhOJA==執行結果截圖
使用線上小工具加密
沒有執行環境,可以直接使用線上網站來加密,也可以達到一樣的效果,不過這個網站目前只能使用default的 PBEWithMD5AndDES
演算法 。
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption
Step2. 引入依賴與配置加密字串,將加密字串後應用在 Spring Boot
如果要應用在資料庫密碼加密上的話,在取得加密字串後,需要做以下動作:
引入Maven dependency,在 POM.xml
中新增 dependency
1 | <dependency> |
properties
檔案設定
1 | # 調整資料庫設定,加上ENC(),方法內填上加密後的字串 |
1 | # 配置啟動參數,服務啟動時,需將加密後的字串透過這把Key解密 |