關於ORACLE數據傳輸加密的介紹

Oracle數據庫的高級安全選項提供了傳輸數據加密、數據完整性驗證等多項功能,在必定程度上能夠保證數據傳輸的安全性。java

鏈接到ORACLE數據庫方式有兩種,一種是經過sqlnet.ora文件,另外一種是經過JDBC方式。算法

爲了使用Oracle的高級安全選項,對此功能進行了簡單測試:sql

功能方面:不管是利用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秒左右。session

經過測試咱們能夠看出傳輸的數據進行加密會對系統性能產生必定的影響,但這種影響不是很大。經過對比幾種加密算法,咱們能夠看出RC系列算法明顯好於DES系列算法。而在某些DML語句上面RC4_40的性能比RC4_56表現更好。oracle

所以,這裏咱們建議使用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鏈接到數據庫的網頁中隨即生效 。

 

相關文章
相關標籤/搜索