2011-10-11 63 views
0

好的我有這個應用程序使用一個叫做EXAMPLE的數據庫。遷移用戶,同時修改密碼加密

這已經持​​續了一段時間。 應用程序使用了一種舊版本的hibernate。

用戶的密碼存儲爲org.jasypt.hibernate.type.EncryptedStringType

<typedef name="encryptedString" class="org.jasypt.hibernate.type.EncryptedStringType"> 
    <param name="encryptorRegisteredName">jasyptHibernateEncryptor</param> 
</typedef> 

    <property name="password" type="encryptedString"> 
     <column name="pwd" length="254" not-null="true" /> 
    </property> 

我不知道,如果它總是這樣,但基本上查詢的用戶時,它會自動解密他的密碼所以我清楚。

現在運行一個新的web應用程序(稱爲webapp2)。

這個以不同的方式以不可解密的方式加密密碼。

我被要求做的是將舊用戶遷移到「新方式」。

我所做的就是用3個模塊創建一個maven項目。

  • 模塊1(又名過時的歌曲)應該只能夠查詢數據庫中的 舊的方式(以便爲用戶表中的每個查詢,我可以有 用戶的明文密碼)
  • 模塊2(又名newie)應該以新的方式查詢數據庫。
  • 單詞數應該有一個dummie類(現在是一個JUnit的thingie) 從模塊2 使用UserService從模塊1和UserService分別讀取用戶密碼(明文),並將其設置回 新途徑。

問題: 我面臨的是很多與module3不得不處理不同版本的hibernate庫的問題。

對我的module3配置(他們都是春季應用程序)我自動裝配服務和模塊1和模塊2的道士製造了很多混亂,最終導致麻煩。

看起來會發生什麼是有混合的依賴關係,使sessionFactories或daos(現在)的實例化不可能。

任何幫助將不勝感激

回答

0

我不會試圖在同一時間使用Hibernate的兩個版本。你可以

  • 在一個小的工具類中提取加密/解密部分,只使用JDBC解密使用舊的方式和使用新的方式加密。
  • 或者直接運行第一個模塊,以明文形式提取所有密碼,並將它們放入文件或專用數據庫表中,然後使用第二個模塊運行第二遍以提取明文密碼並將它們存儲在實體中以使用新方法加密它們。
+0

第二個意見,只要你有這個自由。 – sudmong