有没有办法在oracle中对密码进行单向加密?我正在从文本字段传递密码,并且想在oralce中调用存储过程,并且在该存储过程中,它将对密码进行加密。谢谢
根据定义,加密是双向的。您将永远不会加密密码。我希望您真的想对密码进行哈希处理。而且,您不希望仅散列密码,您确实希望将密码与某种随机的盐结合起来并对其进行散列。
您将使用该dbms_crypto.hash
函数来计算哈希值,并使用该dbms_random.string
函数来生成盐。就像是
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;
另请参阅此askTom讨论(首先使用较旧的dbms_obfuscation_toolkit
软件包而不是dbms_crypto
软件包开始),以了解有关为什么使用哈希,对密码加盐的好处等的更多背景信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句