這是本文件的舊版!
Jasypt
PowerMock
如果有使用PowerMock做測試,記得ignore掉這幾個項目。
@PowerMockIgnore({ "javax.crypto.*", "javax.security.*" })
安裝Java Cryptography Extension (JCE)
如果出現Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File錯誤訊息,請自行到Oracle官網下載JCE包(JCE for Java8),並安裝到%JAVA_HOME%/jre/lib/security中。如果有問題,可以設定JAVA_HOME環境變數再試試看。 (JCE包內容有US_export_policy.jar與local_policy.jar)
Setup Hibernate
最簡單的方式
<hibernate-mapping> <typedef name="encryptedString" class="org.jasypt.hibernate4.type.EncryptedStringType"> <param name="algorithm">PBEWithMD5AndTripleDES</param> <param name="password">jasypt</param> <param name="keyObtentionIterations">1000</param> </typedef> <class name="org.tonylin.fun.tonyaccounts" table="tony_accounts"> <!-- Other items --> <property name="password" type="encryptedString"> <column name="PASSWORD" not-null="true" /> </property> </class> </hibernate-mapping>
使用自己的Encryptor
<hibernate-mapping> <typedef name="encryptedString" class="org.jasypt.hibernate4.type.EncryptedStringType"> <param name="encryptorRegisteredName">tonyEncryptor</param> </typedef> <class name="org.tonylin.fun.tonyaccounts" table="tony_accounts"> <!-- Other items --> <property name="password" type="encryptedString"> <column name="PASSWORD" not-null="true" /> </property> </class> </hibernate-mapping>
<bean id="strongEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="algorithm"> <value>PBEWithMD5AndTripleDES</value> </property> <property name="password"> <value>jasypt</value> </property> <property name="keyObtentionIterations"> <value>1000</value> </property> </bean> <bean id="hibernateStringEncryptor" class="org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor"> <property name="registeredName"> <value>tonyEncryptor</value> </property> <property name="encryptor"> <ref bean="strongEncryptor" /> </property> </bean>