ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 密码字段,使用md5加密,字段存储用raw,避免字符集的问题

密码字段,使用md5加密,字段存储用raw,避免字符集的问题

原创 Linux操作系统 作者:arthurtangel 时间:2013-02-22 10:42:54 0 删除 编辑

SELECT DBMS_OBFUSCATION_TOOLKIT.MD5(input => utl_raw.cast_to_raw('tg')) a,

       DBMS_OBFUSCATION_TOOLKIT.MD5(input => utl_raw.cast_to_raw('123456')) b,

       DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => 'tg') aa,

       DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => '123456') bb

FROM   dual;

 

 

md5有二种方式:

1,输入raw,输出raw

2,输入varchar2,输出varchar2

 

如果使用varchar2,则bgk扩展unicode时可能出现异常(如果使用多重md5加密),for example:

FUNCTION EncryptPWD(p_User VARCHAR2, p_Pwd VARCHAR2) RETURN VARCHAR2 IS

        v_Pwd  VARCHAR2(60) := DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => p_Pwd);

        v_User VARCHAR2(60) := DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => upper(p_User));

        v_Cmb  VARCHAR2(60);

    BEGIN

        IF p_User IS NULL OR p_Pwd IS NULL THEN

            error(57001); --用户名或密码不允许为空

        END IF;

        FOR i IN 1 .. least(lengthb(v_Pwd), lengthb(v_User)) LOOP

            v_Cmb := v_Cmb || substrb(v_User, i, 1) || substrb(v_Pwd, i, 1);

        END LOOP;

        RETURN DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => v_Cmb);

    END;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11990065/viewspace-754556/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 数据结构比较
下一篇: about raw device[zt]
请登录后发表评论 登录
全部评论

注册时间:2011-05-01

  • 博文量
    81
  • 访问量
    240161