兰州理工大学新体育馆:Java ( MD5 加密代码 )

来源:百度文库 编辑:中财网 时间:2024/05/05 12:43:00

 

-----创建包头(函数,游标,存储过程)
create or replace package pg_useres --创建包
is
  CURSOR user_cur return useres%rowtype;--游标(强类型)
  procedure p_validateuser(i_username in varchar2,i_userpwd in varchar2,o_msg out varchar2);--创建存储过程(带参数)
  function f_encode_pwd(str_pwd in varchar2)return varchar2;--函数(带参数)
end;

-----创建包体(将函数及存储过程放到包体中声明)
create or replace package body pg_useres
is
  CURSOR user_cur return useres%rowtype is
   select * from useres;
  v_userpwd useres.userpwd%type;--单行记录类型
  v_pwd varchar2(50);
  raw_pwd raw(128);
  encode_raw raw(2048);
 
  procedure p_validateuser(i_username in varchar2,i_userpwd in varchar2,o_msg out varchar2) is
  begin
     select userpwd into v_pwd from useres where username = i_username;
     if v_pwd <> i_userpwd then
       o_msg := '密码错误,请重新输入!';
     else
       o_msg := '测试,登录成功!';
       --update useres set logintime = SYSDATE where username = i_username;--登录成功后给个当前系统时间
     end if;
     commit;
  Exception
    WHEN NO_DATA_FOUND THEN
      o_msg := '用户名错误,请核对后登录!';
  end;
 
  function f_encode_pwd(str_pwd in varchar2)return varchar2 is
  begin
    raw_pwd := UTL_RAW.cast_to_raw(str_pwd);
    DBMS_OBFUSCATION_TOOLKIT.MD5(input => raw_pwd,checksum => encode_raw);
    return lower(rawtohex(encode_raw));
  end;  
end pg_useres;

-------调用包(函数及存储过程)
declare
 msg varchar2(100);
 v_pwd varchar2(100);
begin
  v_pwd := pg_useres.f_encode_pwd('123456');--调用函数生成32位,MD5加强型密码
  --dbms_output.put_line('v_pwd:'||v_pwd);
  pg_useres.p_validateuser('admin','123456',msg);--调用存储过程进行验证
  dbms_output.put_line('msg:'||msg);
end;

 // 如有不详细,不理解及时联系本人QQ:1050607258 网名:小贝