almost 9 years ago
你原本設定檔可能是明碼長這樣
database.driverClassName=com.mysql.jdbc.Driver
database.url=jdbc\:mysql\://localhost\:3306/test?autoReconnect\=true&useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull
database.username=root
database.password=1qaz2wsx
Spring容器管理那邊這樣就可以載入設定檔使用
<context:property-placeholder location="classpath:orm-config.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${database.driverClassName}" />
<property name="jdbcUrl" value="${database.url}" />
<property name="user" value="${database.username}" />
<property name="password" value="${database.password}" />
</bean>
現在來進行加密處理
先下載jasypt-1.9.2-dist.zip
解開後到lib資料夾內複製 jasypt-1.9.2.jar(主要核心) 跟 jasypt-spring31-1.9.2.jar(Spring整合使用) 到自己的開發項目
在bin資料夾內有encrypt.bat可提供在命令視窗計算加密結果
encrypt input=1qaz2wsx password=12345678 algorithm=PBEwithMD5AndDES
執行結果如下
input 是你要加密的資料
password 是你加密用的密鑰
algorithm 是加密的演算方法
output 就是你加密的結果啦
接下來設定檔中希望加密的資料用ENC()標記,把加密結果放在標記內如下,這樣他就會幫你置換成解密結果
database.driverClassName=com.mysql.jdbc.Driver
database.url=jdbc\:mysql\://localhost\:3306/test?autoReconnect\=true&useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull
database.username=root
database.password=ENC(jGxemtXZ5Ht2GLEkgTQUkJRozNh8AJj4)
<bean id="environmentVariablesConfiguration"
class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<!-- 這邊宣告你要使用的加解密方式 -->
<property name="algorithm" value="PBEWithMD5AndDES" />
<!-- 這邊讓你選擇密鑰的來源,等下說明 -->
<property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
</bean>
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentVariablesConfiguration" />
</bean>
<bean id="propertyConfigurer"
class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor" />
<property name="locations">
<list>
<value>/WEB-INF/classes/orm-config.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${database.driverClassName}" />
<property name="jdbcUrl" value="${database.url}" />
<property name="user" value="${database.username}" />
<property name="password" value="${database.password}" />
</bean>
剛剛設定密鑰來源是指定
<property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
這表示說密鑰需要從環境變數(APP_ENCRYPTION_PASSWORD)取得
環境設定以TOMCAT為例
點擊兩下你的Tomcat開啟內容
再點Open launch configuration開啟執內容,並切換到Environment,點選New
然後輸入程式內要引用的變數名稱跟值就可以了