Oracle中的MD5加密
由于要采用MD5数据加密,因此网上搜了一下下有关材料,并开展细心科学研究。其关键就是说MD5编号的数据文件涵数:DBMS_OBFUSCATION_TOOLKIT.MD5,这儿涉及RAW种类,我觉得就是说初始的编码值。
MD5数据加密的結果就是说16个byte值,也就是说是RAW种类,是显示信息不出去的,要恰当显示信息,必须历经Utl_Raw.Cast_To_Raw变换,这一涵数的功效是将每一字节数的值用十六进制字符表达出去。以便表明清晰,举例说明给出:假设一个字节的二进制值是0100 0001,十六进制表示就是说41(这一值事实上就是说英文字母“A”的ASCII编码值,硬要显示信息,還是能够显示信息出A来的,但一些非ASCII码的值就显示信息不出来,例如1100 0001,十六进制表示就是说C1),那麼历经Utl_Raw.Cast_To_Raw变换后就变为了字符串“41”。
Utl_Raw.Cast_To_Raw涵数还可以变换字符串,也就是说将字符串的编码值(应当是Oracle字符集编码)以十六进制表示出去,比如:
utl_raw.cast_to_raw('iamlaosong')的結果是:69616D6C616F736F6E67
utl_raw.cast_to_raw('我就是老宋')的結果是:CED2CAC7C0CFCBCE
MD5包涵数的使用说明给出:
1、立即启用
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;
显示信息結果:E10ADC3949BA59ABBE56E057F20F883E
这一字符串事实上是16个字节数的值用十六进制表示的結果,至少的空格符是0-9和A-F,正由于这般,至少的英文字母英文大小写是不相干的,都表达相同值。
再举例说明,字符串:iamlaosong,数据加密后显示信息的結果:7E0FB497D8C4515157DDEAFC2E511290,很显而易见,都是16个字节数的十六进制表示。
置于数据加密結果的较为,還是转化成字符串后比较形象化,较为起來也便捷某些。
2、构造函数后,再启用
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;
启用md5涵数实例:
select md5(1) from dual
相关文章
- 4条评论
- 冬马只酷2022-05-31 02:20:22
- swd IN VARCHAR2)RETURN VARCHAR2ISretval varchar2(32);BEGINretval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;RET
- 痴妓铃予2022-05-31 03:01:12
- T_STRING => passwd)) ;RETURN retval;END;启用md5涵数实例:select md5(1) from dual
- 断渊铃予2022-05-31 05:17:37
- 举例说明,字符串:iamlaosong,数据加密后显示信息的結果:7E0FB497D8C4515157DDEAFC2E511290,很显而易见,都是16个字节数的十六进制表示。置于数据加密結果的
- 泪灼照雨2022-05-31 05:54:12
- 都是16个字节数的十六进制表示。置于数据加密結果的较为,還是转化成字符串后比较形象化,较为起來也便捷某些。2、构造函数后,再启用CREATE OR REPLACE FUNCTION MD5(passwd IN