almost 4 years ago

官方網站:http://www.jasypt.org/

你原本設定檔可能是明碼長這樣

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容器管理那邊這樣就可以載入設定檔使用

xml
<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)
xml
<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

然後輸入程式內要引用的變數名稱跟值就可以了

← 用Eclipse開發HBase應用程式 使用CXF將WSDL轉成JAVABEAN →
 
comments powered by Disqus