请问数据库要如何保密

请问数据库要如何保密,第1张

1、思路:在需要加密字段的表中,增加对应的加密后的密文字段。

例如表users中有字段salary需要加密,则增加新字段encrypted存放加密后的内容,而原salary的内容设为0值或者删除。

2、具体来说:编写PL/SQL代码,主要是产生密钥和提供加密解密的function,其中加密解密的function调用Oracle8i提供的数据加密包:dbms_obfuscation_toolkit。

从而使数据得到加解密。

3、测试案例:

(1)、新建了一个SWING的单屏幕,在SF_POST_QUERY_OF_EACH_ROW()方法中调用Oracle已经建立好的function,对解密字段进行解密之后,再显示屏幕相应的字段上。

(2)、当进行insert或者update存盘,在SF_POST_DATABASE_COMMIT()方法中,调用加密function进行加密,然后存入数据库

4、遇到的问题:

(1)查询的时候,由于在SF_POST_QUERY_OF_EACH_ROW()方法中解密后,又往屏幕中字段进行了set动作,导致屏幕的状态改变,最终导致屏幕存盘后会出现数据错误。

(2)这样做的效率比较低,因为每次都要在Java程序里调用解密,存盘时调用加密。

Oracle规定,不能对trigger的触发表进行 *** 作。

还有,如果用自治事务去实现,同样在update动作的时候会造成dead lock发生。

可以自己写个加解密模块,应付老师的话采用简单的加解密算法就行了,比如特定位置插入字符、移位、加减等等,也可以用别人写好的商用加解密算法,数据库里面保存加密后的内容,需要解密时调用你对应的解密算法就OK了

以下代码可以满足你的需求,已经在oracle中测试。

create table password1

(

user_id varchar2(10),

pwd varchar2(100)

)

CREATE OR REPLACE FUNCTION GET_MD5

( p_str in varchar2)

RETURN varchar2 IS

BEGIN

RETURN Utl_RawCast_To_Raw(DBMS_OBFUSCATION_TOOLKITMD5(input_string => Upper(P_Str)));

END;

insert into password1 values('wwj',GET_MD5('WWJ'));

update password1 set pwd=GET_MD5('LXY') where user_id='wwj'

通过配置本地数据库的tns配置文件实现:

去oracle安装目录下oracle\product\1020\db_2\NETWORK\ADMIN\ 找到tnsnamesora,用记事本打开,里边有远程数据库的tns连接配置串如下

ORCL23 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192168323)(PORT = 1521))

)

(CONNECT_DATA =

(SID = ORCL)

)

)

添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文档中唯一,保存后打开数据库连接工具,输入远程数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了

以上就是关于请问数据库要如何保密全部的内容,包括:请问数据库要如何保密、C/C++连接oracle 数据库,把数据库的用户名,密码等先加密到一个文件中,然后再解密出来供连接数据库使用、如何把oracle数据库中的密码这一项的字段都改成MD5加密的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9793885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存