【发布时间】:2012-09-17 19:01:05
【问题描述】:
我目前正在使用 DBMS_CRYPTO.HASH 对我的 Oracle 数据库中的密码字段进行哈希处理。然而,此时,我需要让我的 Java 应用程序能够以类似于 MySQL 的方式验证用户输入的密码。比如:
SELECT *
FROM user_login_table
WHERE password = SHA1('MyPassword');
我目前正在通过以下过程进行散列:
CREATE OR REPLACE PROCEDURE
MUNGAI.p_auth_insert_user (
par_username in varchar2,
par_password in varchar2,
par_work in varchar2
)
IS l_hash raw(2000);
BEGIN
l_hash :=
dbms_crypto.hash(
utl_i18n.string_to_raw(par_password || par_work || upper(par_username),
'AL32UTF8'
),
dbms_crypto.hash_sh1
);
INSERT INTO user_login_table (user_name, p_word, work_class)
VALUES (par_username, l_hash, par_work);
END p_auth_insert_user;
/
然后我执行如下过程,插入到表中:
EXEC MUNGAI.p_auth_insert_user('MUNGAI', 'gatungo', '999')
在我的情况下,有没有更好的方法来实现这一点?我正在使用 Oracle 11g,如果这很重要的话。
【问题讨论】:
-
如果要查找 SHA1 实现,请检查 anyexample.com/programming/java/…
标签: java oracle11g password-hash dbms-crypto