作者:iamlaosong
因为要用到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