<a href="http://blog.csdn.net/cymm_liu/article/details/41810115">透明資料加密(Transparent Data Encryption)</a>
TDE - 基于列的加密
由于有了Oracle的TDE-基于列的加密,你所要做的隻是定義需要加密的列,Oracle将為包含加密列的表建立一個私密的安全加密密鑰,然後采用你指定的加密算法加密指定列的明文資料。
這個加密,不需要我們寫特殊的代碼,隻要我們制定“需要加密的列”,當使用者插入下一行資料的時候,資料庫透明的加密資料然後存儲加密後的資料。當使用者讀取資料時,資料庫給我們自動解密,也不需要應用程式去修改任何代碼。
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 11.2.0
2. 設定wallet的位置(在sqlnet.ora檔案中寫入如下内容,需要重新開機資料庫才能生效): 指定 ENCRYPTION_WALLET_LOCATION 參數
[oracle@11g admin]$ cat sqlnet.ora
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES)
ENCRYPTION_WALLET_LOCATION =
(SOURCE=
(METHOD=file)
(METHOD_DATA=
(DIRECTORY=/home/oracle/wallet)))
3)在指定(DIRECTORY路徑下建好wallet目錄。 不然報:ORA-28368: cannot auto-create wallet
[oracle@11g ~]$ mkdir wallet
[oracle@11g wallet]$ pwd
/home/oracle/wallet
4)在wallet裡面建立key
SQL> alter system set encryption key authenticated by "andy";
System altered.
SQL> create table andy.andy_tde(
id number(10) primary key,
col_tde varchar2(50) encrypt using 'AES192'
); 2 3 4
Table created.
說明:TDE支援的加密算法:
3DES168 AES128 AES192(預設) AES256
SQL> set linesize 300
SQL> select * from dba_encrypted_columns;
OWNER TABLE_NAME COLUMN_NAME ENCRYPTION_ALG
------------------------------ ------------------------------ ------------------------------ ------------------
ANDY ANDY_TDE COL_TDE AES 192 bits key
SQL> insert into andy_tde values (1,'tde');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from andy_tde;
ID COL_TDE
---------- ---------------------------------
1 tde
6)如果關閉wallet,無法通路加密的資料:
SQL> alter system set wallet close identified by "andy";
select * from andy_tde
*
ERROR at line 1:
ORA-28365: wallet is not open
7)重新打開wallet,才可以通路加密的資料
SQL> alter system set wallet open identified by "andy";
---------- ----------------------------
本文轉自 張沖andy 部落格園部落格,原文連結:http://www.cnblogs.com/andy6/p/6265870.html ,如需轉載請自行聯系原作者