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