兰州理工大学新体育馆: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 网名:小贝