oraclemd5加密函數
㈠ Oracle定義DES加密解密及MD5加密函數示例
(1)DES加密函數
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解密函數
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加密函數
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)函數使用示例
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);
㈡ 如何把oracle資料庫中的密碼這一項的欄位都改成MD5加密的
UPDATE table SET 密碼=MD5(密碼);
不知道oracle中有沒有,mysql中是存在的。
㈢ 在Oracle資料庫中怎麼實現明白儲存,如何用MD5或者其他方法來實現,求詳細解答,急急急.....
java">//MD5加密函數
selectMD5('密碼');
//PASSWORD加密函數
selectPASSWORD('密碼');
--以上語句,可以直接執行查看效果
㈣ oracle存儲過程中調用MD5加密的方法
CREATE OR REPLACE FUNCTION fn_md5 (input_string IN VARCHAR2)
RETURN VARCHAR2
IS
raw_input RAW (128)
:= UTL_RAW.cast_to_raw (input_string);
decrypted_raw RAW (2048);
error_in_input_buffer_length EXCEPTION;
BEGIN
DBMS_OBFUSCATION_TOOLKIT.md5 (input => raw_input,
checksum => decrypted_raw
);
RETURN LOWER (RAWTOHEX (decrypted_raw));
END;
http://www.matrix.org.cn/resource/article/2005-12-03/Oracle_44020.html
看看這個吧,學習學習
㈤ Oracle資料庫中MD5解密方法是什麼
MD5解密方法x0dx0a我在存儲資料庫的時候,通過md5加密方法將欄位進行加密,當我在讀取該欄位時如何正確的讀取原來的值啊x0dx0a------解決方案--------------------x0dx0a沒辦法,MD5是不可逆的。x0dx0a你需要使用可逆加密演算法。x0dx0a------解決方案--------------------x0dx0a插入表中的時候md5加密x0dx0a櫻擾比如:x0dx0a$sql= "insert into register(names,pswd,repswd) values( '$_POST[names] ',md5( '$_POST[pswd] '),md5( '$_POST[repswd] ')) ";x0dx0a$qid=mysql_query($sql);x0dx0a讀取的時候x0dx0a$pswd=empty($_POST[ 'pswd '])? ' ':md5($_POST[ 'pswd ']);x0dx0a------解決方案--------------------x0dx0a如果業務要求可還原,那麼不要採用MD5,請使用可逆加密演算法,如DES加密。x0dx0aMD5為不可逆散列演算法,可用於存儲用戶密碼,存儲後不需要永遠不需要知道明文。密碼比較時只需將用戶輸入的密碼再次轉成MD5碼與存儲的相比脊碰旦較即可得知用戶輸入密碼是否正確。x0dx0alinux/unix操作系統一般採用MD5進行用戶密碼加密。x0dx0a------解決方案--------------------x0dx0aMD5目前所謂的破解只是採用碰撞法找到了對等因子。x0dx0a比如:string1的MD5碼為MD1,而現在我們做到的只是又找到了一個string2,它的MD5碼也是MD1。x0dx0a結果就是:用戶登陸某採用MD5加密的系統時,本來密碼是12345,現在可能用abcde也能登陸。x0dx0a想想可能還原嗎?如果吵纖可以還原,那天大的信息也能用32位長的字元串表示了,這不成了超級壓縮演算法了嗎,整個宇宙的信息都可以用32位長表示了。不可逆的!
㈥ 求 Oracle MD5加密,及java程序端的處理步驟
今天剛做了個加密的程序:分享一下:
你可以這樣做:你在新建的密碼的時候 去調用下面的方法 把密碼帶進去加密 此時向資料庫中插入這個加密的欄位。 登錄的時候 輸入密碼 當然這個密碼要轉為加密的密文,這個密文去與你一開始新增加的密文進行匹配 如果匹配上啦 那麼就可以登錄進去啦。
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] b = md.digest(這里是你加密的密碼.getBytes("utf8"));
StringBuilder ret=new StringBuilder(b.length<<1);
for(int i=0;i<b.length;i++){
ret.append(Character.forDigit((b[i]>>4)&0xf,16));
ret.append(Character.forDigit(b[i]&0xf,16));
}
ret.toString();
System.out.println(ret.toString());
String result = "";
for (int i = 0; i < b.length; i++) {
String tmp = Integer.toHexString(b[i] & 0xFF);
if (tmp.length() == 1) {
result += "0" + tmp;
} else {
result += tmp;
}
}
System.out.println(new String(result));
}