Oracle定義DES加密解密及MD5加密函數(shù)示例
(1)DES加密函數(shù)
create or replace function encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is v_text varchar2(4000); v_enc varchar2(4000); raw_input RAW(128) ; key_input RAW(128) ; decrypted_raw RAW(2048); begin v_text := rpad( p_text, (trunc(length(p_text)/8)+1)*8, chr(0)); raw_input := UTL_RAW.CAST_TO_RAW(v_text); key_input := UTL_RAW.CAST_TO_RAW(p_key); dbms_obfuscation_toolkit.DESEncrypt(input => raw_input,key => key_input,encrypted_data =>decrypted_raw); v_enc := rawtohex(decrypted_raw); dbms_output.put_line(v_enc); return v_enc; end;
(2)DES解密函數(shù)
create or replace function decrypt_des(p_text varchar2,p_key varchar2) return varchar2 is v_text varchar2(2000); begin dbms_obfuscation_toolkit.DESDECRYPT(input_string => UTL_RAW.CAST_TO_varchar2(p_text),key_string =>p_key, decrypted_string=> v_text); v_text := rtrim(v_text,chr(0)); dbms_output.put_line(v_text); return v_text; end;
(3)MD5加密函數(shù)
CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32); BEGIN retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ; RETURN retval; END;
(4)函數(shù)使用示例
DES加密: update tb_salarysign_staff s set s.staffpwd =encrypt_des(s.staffpwd, 'test#5&124*!de');
DES解密:select decrypt_des(s.staffpwd, 'test#5&124*!de') from tb_salarysign_staff s
MD5加密: update tb_salarysign_staff s set s.staffpwd = md5(s.staffpwd);
PS:關(guān)于加密運(yùn)算,這里再為大家提供幾款比較實(shí)用的工具供大家參考使用:
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
相關(guān)文章
簡單說明Oracle數(shù)據(jù)庫中對(duì)死鎖的查詢及解決方法
這篇文章主要介紹了Oracle數(shù)據(jù)庫中對(duì)死鎖的查詢及解決方法,文中用兩個(gè)表創(chuàng)造死鎖的簡單例子來說明對(duì)死鎖的撤銷方法,需要的朋友可以參考下2016-01-01Oracle中Union與Union All的區(qū)別(適用多個(gè)數(shù)據(jù)庫)
如果我們需要將兩個(gè)select語句的結(jié)果作為一個(gè)整體顯示出來,我們就需要用到union或者union all關(guān)鍵字。union(或稱為聯(lián)合)的作用是將多個(gè)結(jié)果合并在一起顯示出來2012-07-07DB2數(shù)據(jù)庫切換為oracle數(shù)據(jù)庫經(jīng)驗(yàn)教訓(xùn)總結(jié)(必看篇)
下面小編就為大家?guī)硪黄狣B2數(shù)據(jù)庫切換為oracle數(shù)據(jù)庫經(jīng)驗(yàn)教訓(xùn)總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04Oracle設(shè)置時(shí)區(qū)和系統(tǒng)時(shí)間的多種實(shí)現(xiàn)方法
在Oracle數(shù)據(jù)庫中,設(shè)置時(shí)區(qū)和系統(tǒng)時(shí)間可以通過多種方法實(shí)現(xiàn),本文通過代碼示例給大家介紹了Oracle設(shè)置時(shí)區(qū)和系統(tǒng)時(shí)間的多種實(shí)現(xiàn)方法,需要的朋友可以參考下2024-02-02Oracle中的半聯(lián)結(jié)和反聯(lián)結(jié)詳解
這篇文章主要介紹了Oracle中的半聯(lián)結(jié)和反聯(lián)結(jié)詳解,也稱半連接和反連接,其實(shí)就是in、exists,需要的朋友可以參考下2014-07-07oracle?delete誤刪除表數(shù)據(jù)后如何恢復(fù)
最近在使用oracle數(shù)據(jù)時(shí),一不小心把table中的數(shù)據(jù)delete掉并且已經(jīng)提交了,下面這篇文章主要給大家介紹了關(guān)于oracle?delete誤刪除表數(shù)據(jù)后如何恢復(fù)的相關(guān)資料,需要的朋友可以參考下2022-06-06ORACLE 正則解決初使化數(shù)據(jù)格式不一致
在初使化用戶基礎(chǔ)數(shù)據(jù)時(shí)會(huì)出現(xiàn)一些數(shù)據(jù)格式不正確的情況。。2009-05-05