重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4862|回复: 0
打印 上一主题 下一主题

关于ORACLE数据传输加密的介绍

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-13 18:51:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 

Oracle数据库的高级安全选项提供了传输数据加密、数据完整性验证等多项功能,在一定程度上可以保证数据传输的安全性。

连接到ORACLE数据库方式有两种,一种是通过sqlnet.ora文件,另一种是通过JDBC方式。

为了使用Oracle的高级安全选项,对此功能进行了简单测试:

 

功能方面:无论是利用sqlnet.ora还是通过JDBC连接到ORACLE数据库,这两种方式都可以进行实现数据加密。

 

性能方面:不加密情况下执行时间较短、数据包个数相对较少且CPU空闲率相对较高。使用RC4_40和RC_4_56的加密算法对性能影响较小,CPU使用率和执行时

间增加不超过1%。使用DES40C和DES56C对系统性能影响不超过2%。

 

高频调用测试:我们利用loadrunner模拟10个客户端进行同时调用,不加密时CPU的占用率要比使用加密算法时CPU的占用率低2-3%左右。对于本次测试,使用RC4_40和RC4_56算法比使用DES40和DES50算法节省大约10秒左右。

 

通过测试我们可以看出传输的数据进行加密会对系统性能产生一定的影响,但这种影响不是很大。通过对比几种加密算法,我们可以看出RC系列算法明显好于DES系列算法。而在某些DML语句上面RC4_40的性能比RC4_56表现更好。

因此,这里我们建议使用RC_40算法对通过传输的数据进行加密。

 

设置传输加密在服务器端是通过设置sqlnet.ora文件实现的。此文件可以动态修改,也就是说可以在数据库运行时直接打开此文件,加入下面代码随即生效:

SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_40)

SQLNET.ENCRYPTION_SERVER = accepted

SQLNET.CRYPTO_SEED = # 加密种子

 

通过sqlnet.ora文件连接到ORACLE数据库的在客户端也有这个文件。设置也是可以动态修改的,加入下面代码随即生效:

SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_40)

SQLNET.ENCRYPTION_SERVER = requested

SQLNET.CRYPTO_SEED = # 加密种子

 

通过JDBC连接到数据库的方式,需要在加密的网页中加入下面的代码:

<%@ page session="false" %>

<%@ page import="java.sql.*" %>

<%@ page import="java.io.*" %>

<%@ page import="java.util.*" %>

<%@ page import="oracle.net.ns.*" %>

<%@ page import="oracle.net.ano.*" %>

Properties prop = new Properties();

prop.put("user","test");

prop.put("password","test");

prop.put("oracle.net.encryption_client", "REQUESTED");

prop.put("oracle.net.encryption_types_client", "(RC4_40)");

――无需设置加密种子。

上面的加密代码加到每一个利用JDBC连接到数据库的网页中随即生效 。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-6-3 10:16 , Processed in 0.081489 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表