关于ORACLE数据传输加密的介绍
Oracle数据库的高级安全选项提供了传输数据加密、数据完整性验证等多项功能,在一定程度上可以保证数据传输的安全性。连接到ORACLE数据库方式有两种,一种是通过sqlnet.ora文件,另一种是通过JDBC方式。为了使用Oracle的高级安全选项,对此功能进行了简单测试: 1. 功能方面:无论是利用sqlnet.ora还是通过JDBC连接到ORACLE数据库,这两种方式都可以进行实现数据加密。 2. 性能方面:不加密情况下执行时间较短、数据包个数相对较少且CPU空闲率相对较高。使用RC4_40和RC_4_56的加密算法对性能影响较小,CPU使用率和执行时间增加不超过1%。使用DES40C和DES56C对系统性能影响不超过2%。 3. 高频调用测试:我们利用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 = P@ssw0rd1 # 加密种子 通过sqlnet.ora文件连接到ORACLE数据库的在客户端也有这个文件。设置也是可以动态修改的,加入下面代码随即生效: SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_40) SQLNET.ENCRYPTION_SERVER = requested SQLNET.CRYPTO_SEED = P@ssw0rd1 # 加密种子 通过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连接到数据库的网页中随即生效 。 |