0
有没有办法在oracle中对密码进行单向加密?我从文本字段传递密码,并且想要在oralce和存储过程中调用存储过程,它会加密密码。谢谢单向加密oracle
有没有办法在oracle中对密码进行单向加密?我从文本字段传递密码,并且想要在oralce和存储过程中调用存储过程,它会加密密码。谢谢单向加密oracle
根据定义,加密是双向的。你永远不会加密密码。我希望你真的想散列密码。而且你不希望只是散列密码,你真的想将密码与某种随机盐和散列相结合。
您将使用dbms_crypto.hash
function来计算散列,并使用dbms_random.string
function来生成盐。像
DECLARE
l_salt varchar2(50);
l_user varchar2(50);
l_pwd varchar2(50);
l_string_to_hash varchar2(150);
l_hash raw(150);
BEGIN
l_salt := dbms_random.string('P', 50);
l_string_to_hash := l_user || l_pwd || l_salt;
l_hash := dbms_crypto.hash(utl_i18n.string_to_raw(l_string_to_hash, 'AL32UTF8'),
dbms_crypto.hash_sh1);
END;
看到的东西也this askTom discussion(这开始了使用旧dbms_obfuscation_toolkit
包而不是dbms_crypto
包),对为什么你会使用散列,腌制密码的好处的更多背景等
我得到了dbms_crypto必须声明。是因为我使用10g吗? – user3731575 2014-10-09 22:57:04
@ user3731575 - 'dbms_crypto'存在于10.2中。我很确定它也存在于10.1中(尽管这已经被支持了很久,内存消失了)。您可能需要您的DBA授予您访问该软件包的权限。 – 2014-10-09 22:58:27
因此11g或更高版本不支持dbms_crypto?有什么我可以用在10g及以后的版本?因为我的公司即将迁移到11g。谢谢 – user3731575 2014-10-09 23:01:12