密码字段,使用md5加密,字段存储用raw,避免字符集的问题_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2282 | 回复: 0   主题: 密码字段,使用md5加密,字段存储用raw,避免字符集的问题        下一篇 
dwx8023
注册用户
等级:上尉
经验:612
发帖:114
精华:0
注册:2011-11-8
状态:离线
发送短消息息给dwx8023 加好友    发送短消息息给dwx8023 发消息
发表于: IP:您无权察看 2015-7-28 18:17:30 | [全部帖] [楼主帖] 楼主

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
FROMdual;


md5有二种方式:

1,输入raw,输出raw

2,输入varchar2,输出varchar2

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

FUNCTION EncryptPWD(p_User VARCHAR2, p_Pwd VARCHAR2) RETURNVARCHAR2IS
v_PwdVARCHAR2(60) := DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => p_Pwd);
v_User VARCHAR2(60) := DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => upper(p_User));
v_CmbVARCHAR2(60);
BEGIN
IF p_User ISNULLOR p_Pwd ISNULLTHEN
error(57001); --用户名或密码不允许为空
ENDIF;
FOR i IN1 .. least(lengthb(v_Pwd), lengthb(v_User)) LOOP
v_Cmb := v_Cmb || substrb(v_User, i, 1) substrb(v_Pwd, i, 1);
ENDLOOP;
RETURN DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => v_Cmb);
END;


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论