好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle数据加密方法分析

本文实例讲述了Oracle数据加密方法。分享给大家供大家参考,具体如下:

使用MD5编码实现数据库用户密码字段的加密

一、前言

众所周知,MD5是目前应用最多的密码保护方法,该编码传说为不可逆加密编码(也就是说,永运无法倒算原码)。 使用MD5加密用户的操作密码,可以有效防止系统维护人员直接进入数据库时出现系统安全漏洞(直接使用SELECT语句查询,将用户密码字段只能看到乱码,或者"****")

这里针对密码字段加密,作一实例,希望能给大家系统建设过程带来帮助。

二、技术点

1. DBMS_OBFUSCATION_TOOLKIT.MD5

DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFUSCATION_TOOLKIT.MD5(input_string =>'abc') a from Dual时,却有错误提示,看来该函数只能直接在程序包中调用,不能直接应用于SELECT语句。

2. Utl_Raw.Cast_To_Raw

DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW类型,要正确显示,需要经过Utl_Raw.Cast_To_Raw转换

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

create or replace package test_md5 as

   function fn_getmd5(p_str in varchar2)

     return varchar2;

   function fn_checkuser(p_username in varchar2,p_password in varchar2)

     return number;

end ;

create or replace package body test_md5 as

   function fn_getmd5(p_str in varchar2)

     return varchar2 as

   begin

     return DBMS_OBFUSCATION_TOOLKIT.MD5(

       input_string => Upper (p_str)

     );

   end ;

   function fn_checkuser(p_username in varchar2,p_password in varchar2)

     return number

   is

     l_password varchar (1000);

   begin

     select password into l_password from test_user

     where upper (username)= upper (p_username) and password =Test_MD5.FN_GetMD5(p_password);

     if l_password is null Then

       return 0;

     else

       return 1;

     end if;

     exception

     when NO_DATA_FOUND then

       return 3;

   end ;

end ;

测试:

?

1

2

3

4

5

6

7

Delete Test_User;

Insert Into Test_User Values ( 'A' ,Test_MD5.FN_GetMD5( 'aa' ));

Insert Into Test_User Values ( 'B' ,Test_MD5.FN_GetMD5( 'bb' ));

select * from test_user;

Select Test_MD5.FN_CheckUser( 'a' , 'aa' ) From Dual;

Select Test_MD5.FN_CheckUser( 'a' , 'bb' ) From Dual;

select * from Test_User t where t. password =test_md5.fn_getmd5( 'aa' )

希望本文所述对大家Oracle数据库程序设计有所帮助。

查看更多关于Oracle数据加密方法分析的详细内容...

  阅读:49次