2013-10-24 93 views
0

我一直在開發一個java web應用程序,其中包含使用spring security,md5 encryption和Oracle作爲db的登錄功能。在使用md5加密之前,我的應用程序工作正常。但使用後,我的應用程序不會重定向到下一頁,總是登錄錯誤。 我一直在使用Google,它表示oracle並不支持md5。如何讓oracle db支持md5加密?

這裏是XML:

<authentication-manager> 
    <authentication-provider> 
     <password-encoder hash="md5"/> 
     <jdbc-user-service data-source-ref="dataSource" 
     users-by-username-query=" 
      SELECT username, password, 1 as enabled 
      FROM USER_ACCOUNT WHERE username=?" 

     authorities-by-username-query="   
      SELECT u.username, ur.authority FROM USER_ACCOUNT u, USER_ROLES ur 
      where u.user_id = ur.user_id and u.username =?" 

      /> 
    </authentication-provider> 
</authentication-manager> 

有沒有什麼辦法讓Oracle數據庫支持MD5 ecryption?

問候

尤努斯

+0

MD5不是ecryption,它是哈希。 – EJP

回答

2

EJP是正確的。 MD5是一種加密散列函數,而不是加密算法。就加密算法而言,我相信Oracle支持具有各種密鑰大小(128,192和256位)的3DES168和AES。

對於登錄函數,您明確希望使用哈希函數而不是加密。哈希是單向數據轉換,加密意味着雙向轉換(您可以加密和解密目標數據)。這就是說Oracle並支持如在其文檔中概述的各種方法散列:http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_crypto.htm#ARPLS65700

SHA1哈希: hashed_data:= dbms_crypto.hash(original_data,dbms_crypto.HASH_SH1);

MD5哈希值: hashed_data:= dbms_crypto.hash(original_data,dbms_crypto.HASH_MD5);

如果您希望在我推薦使用SHA-1時實現身份驗證系統。在散列它們之前,您還應該密碼。您可以在這裏閱讀關於密碼醃製的優秀文章:http://www.cubehouse.org/blog/2011/05/02/password-hashing-how-to-make-it-not-suck-a-basic-guide/

爲了增加安全性,使用SHA-2位長度較長,因爲對SHA-1的攻擊變得非常有效。

0

您需要更新您的用戶密碼。

更新用戶設置password = lower(DBMS_OBFUSCATION_TOOLKIT.md5(input => UTL_RAW.cast_to_raw('topSecretPassword')))其中username ='user';