如何让oracle db支持md5加密?

时间:2013-10-24 05:41:39

标签: java database oracle spring-security md5

我一直在开发一个java web应用程序,它包含使用spring security,md5加密和Oracle作为db的登录功能。在使用md5加密之前,我的应用运行正常。但使用它后,我的应用程序不会重定向到下一页,总是登录错误。 我一直在谷歌搜索,它说oracle还没有支持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 db支持md5 ecryption?

此致

努斯

2 个答案:

答案 0 :(得分: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的攻击正在变得非常有效。

答案 1 :(得分:0)

您需要更新用户密码。

更新用户设置密码=更低(DBMS_OBFUSCATION_TOOLKIT.md5(input =&gt; UTL_RAW.cast_to_raw('topSecretPassword')))其中username ='user';