16字节 oracle md5,Oracle中的MD5加密
因?yàn)橐玫組D5加密,所以在網(wǎng)上搜了一下相關(guān)資料,并進(jìn)行仔細(xì)研究。其核心就是MD5編碼的數(shù)據(jù)包函數(shù):DBMS_OBFUSCATION_TOOLKIT.M
因?yàn)橐玫組D5加密,所以在網(wǎng)上搜了一下相關(guān)資料,并進(jìn)行仔細(xì)研究。其核心就是MD5編碼的數(shù)據(jù)包函數(shù):DBMS_OBFUSCATION_TOOLKIT.MD5,這里涉及到RAW類型,其實(shí)就是原始的代碼值。
MD5加密的結(jié)果就是16個byte值,也就是是RAW類型,是顯示不出來的,要正確顯示,需要經(jīng)過Utl_Raw.Cast_To_Raw轉(zhuǎn)換,這個函數(shù)的作用是將每個字節(jié)的值用十六進(jìn)制字符表示出來。為了說明清楚,舉例如下:假定一個字節(jié)的二進(jìn)制值是0100 0001,十六進(jìn)制表示就是41(這個值實(shí)際上就是字母“A”的ASCII代碼值,硬要顯示,還是可以顯示出A來的,但有些非ASCII碼的值就顯示不出來了,比如1100 0001,十六進(jìn)制表示就是C1),那么經(jīng)過Utl_Raw.Cast_To_Raw轉(zhuǎn)換后就變成了字符串“41”。
Utl_Raw.Cast_To_Raw函數(shù)也可以轉(zhuǎn)換字符串,也就是將字符串的代碼值(應(yīng)該是Oracle字符集內(nèi)碼)以十六進(jìn)制表示出來,例如:
utl_raw.cast_to_raw('iamlaosong')的結(jié)果是:69616D6C616F736F6E67
utl_raw.cast_to_raw('我是老宋')的結(jié)果是:CED2CAC7C0CFCBCE
MD5包函數(shù)的使用方法如下:
1、直接調(diào)用
declare
v2 varchar2(32);
begin
v2 := Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => '123456'));
dbms_output.put_line(v2);
end;
顯示結(jié)果:E10ADC3949BA59ABBE56E057F20F883E
這個字符串實(shí)際上是16個字節(jié)的值用十六進(jìn)制表示的結(jié)果,其中的字符是0-9和A-F,,正因?yàn)槿绱?#xff0c;其中的字母大小寫是無關(guān)的,都表示同一個值。
再舉個例子,字符串:iamlaosong,加密后顯示的結(jié)果:7E0FB497D8C4515157DDEAFC2E511290,很顯然,也是16個字節(jié)的十六進(jìn)制表示。
至于加密結(jié)果的比較,還是轉(zhuǎn)換成字符串后較為直觀,比較起來也方便一些。
2、構(gòu)造函數(shù)后,再調(diào)用
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;
調(diào)用md5函數(shù)示例:
select md5(1) from dual
本文永久更新鏈接地址:
本條技術(shù)文章來源于互聯(lián)網(wǎng),如果無意侵犯您的權(quán)益請點(diǎn)擊此處反饋版權(quán)投訴
本文系統(tǒng)來源:php中文網(wǎng)
總結(jié)
以上是生活随笔為你收集整理的16字节 oracle md5,Oracle中的MD5加密的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea 注释中 类 跳转_javaSE
- 下一篇: 慰问表演部队特点是什么