最近在做公司内部系统的升级工作,原来的系统是密码不用加密,现在需要md5加密。
oracle 数据库 密码md5加密,oracle提供了md5加密函数。
但是密码为空加密报错,在网上找了半天没有找到解决方法,最后问了一个
老同事,解决啦。
fn_md5函数:
CREATE OR REPLACE FUNCTION fn_md5 (input_string IN VARCHAR2)
RETURN VARCHAR2
IS
raw_input RAW (128)
:= UTL_RAW.cast_to_raw (input_string);
decrypted_raw RAW (2048);
error_in_input_buffer_length EXCEPTION;
BEGIN
DBMS_OBFUSCATION_TOOLKIT.md5 (input => raw_input,
checksum => decrypted_raw
);
RETURN UPPER(RAWTOHEX (decrypted_raw));
END;
加密的sql语句:
update uum_user r set r.user_passwd=decode(r.user_passwd,'','D41D8CD98F00B204E9800998ECF8427E',fn_md5(r.user_passwd));
主要采用了decode(a,b,c,d,e,f……)函数,如果a的值等于b,那这个函数返回c,如果a的值等于d 那么返回e……。