欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle數(shù)據(jù)怎么加密,oracle數(shù)據(jù)加密入庫(kù)

oracle 字段加密

這個(gè)主要看軟件開發(fā)人員的加密方式

為太康等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及太康網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、做網(wǎng)站、太康網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

一般流程是,

1.新建用戶,或者修改密碼時(shí)候,將用戶輸入的密碼按照一定的加密方式加密后儲(chǔ)存在數(shù)據(jù)庫(kù)

2.在用戶登錄的時(shí)候,將用戶所輸入的密碼再次進(jìn)行加密后與數(shù)據(jù)庫(kù)內(nèi)的加密密碼對(duì)比

這樣做的好處是,防止密碼在網(wǎng)絡(luò)傳輸過程中被截取,比如黑客可以對(duì)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)進(jìn)行抓包分析,對(duì)于加密的密碼在傳輸過程中不是以明文進(jìn)行傳輸,如果被竊取到數(shù)據(jù),不能得到有效破解,也是沒有用的,這就增加了可靠性。

如何在Oracle SecureFiles中加密數(shù)據(jù)

用于加密非LOB字段的透明數(shù)據(jù)加密語(yǔ)法與在Oracle SecureFiles中啟用加密的語(yǔ)法完全相同。它們有一個(gè)重要的區(qū)別,非LOB字段可以使用NO SALT參數(shù)阻止TDE在加密數(shù)據(jù)之前先給數(shù)據(jù)添加一個(gè)隨機(jī)字符串。Oracle SecureFile LOB字段不支持NO SALT選項(xiàng)。我們可以使用數(shù)據(jù)字典視圖USER_ENCRYPTED_COLUMNS確定應(yīng)該加密哪一些字段,以及這些字段的狀態(tài)。下面是一些ENCRYPT子句的例子:

CREATE TABLE tab_3DES (col1 CLOB ENCRYPT USING '3DES168')

LOB(col1) STORE AS SECUREFILE(

CACHE

NOLOGGING

);

使用默認(rèn)加密算法(AES192)和一個(gè)密碼創(chuàng)建一個(gè)Oracle SecureFile LOB字段:

CREATE TABLE tab_enc_pw (col1 CLOB ENCRYPT IDENTIFIED BY badpassword)

LOB(col1) STORE AS SECUREFILE(

CACHE

);

使用AES256啟用LOB加密:

ALTER TABLE tab_nocrypt MODIFY

( col1 CLOB ENCRYPT USING 'AES256');

通過重新生成加密密鑰修改一個(gè)Oracle SecureFiles字段:

ALTER TABLE tab_3DES REKEY USING 'AES256';

Disable LOB encryption:

禁用LOB加密:

ALTER TABLE tab_enc_pw MODIFY

( col1 CLOB DECRYPT);

Oracle數(shù)據(jù)庫(kù)中存儲(chǔ)的大對(duì)象數(shù)據(jù)容量會(huì)繼續(xù)增長(zhǎng),但是存儲(chǔ)費(fèi)用在不斷下降。其中有許多的敏感數(shù)據(jù),如醫(yī)療記錄、員工數(shù)據(jù)和知識(shí)產(chǎn)權(quán)。能夠?qū)@些信息進(jìn)行加密,這是非常寶貴的,也可以避免在將來投入大量金錢和精力去實(shí)現(xiàn)安全性。

如何在oracle 10g r2中實(shí)現(xiàn)透明數(shù)據(jù)加密

設(shè)置加密密鑰:

Oracle 透明數(shù)據(jù)加密提供了實(shí)施加密所必需的關(guān)鍵管理基礎(chǔ)架構(gòu)。 加密的工作原理是將明文數(shù)據(jù)以及秘密(稱作密鑰)傳遞到加密程序中。 加密程序使用提供的密鑰對(duì)明文數(shù)據(jù)進(jìn)行加密,然后返回加密數(shù)據(jù)。 以往,創(chuàng)建和維護(hù)密鑰的任務(wù)由應(yīng)用程序完成。 Oracle 透明數(shù)據(jù)加密通過為整個(gè)數(shù)據(jù)庫(kù)自動(dòng)生成一個(gè)萬(wàn)能密鑰解決了此問題。 在啟動(dòng) Oracle 數(shù)據(jù)庫(kù)時(shí),管理員必須使用不同于系統(tǒng)口令或 DBA 口令的口令打開一個(gè) Oracle Wallet 對(duì)象。 然后,管理員對(duì)數(shù)據(jù)庫(kù)萬(wàn)能密鑰進(jìn)行初始化。 萬(wàn)能密鑰是自動(dòng)生成的。

性能:

由于索引數(shù)據(jù)未被加密,因此加密通常會(huì)影響現(xiàn)有的應(yīng)用程序索引。 Oracle 透明數(shù)據(jù)加密對(duì)與給定應(yīng)用程序表關(guān)聯(lián)的索引值進(jìn)行加密。 這意味著應(yīng)用程序中的相等搜索對(duì)性能的影響很小,甚至沒有任何影響。 例如,假設(shè)應(yīng)用程序 card_id存在一個(gè)索引,并且此應(yīng)用程序執(zhí)行以下語(yǔ)句:

SQL Select cash from credit_card where card_id = '1025023590';

Oracle 數(shù)據(jù)庫(kù)將使用現(xiàn)有的應(yīng)用程序索引,盡管 card_id信息已經(jīng)在數(shù)據(jù)庫(kù)中加密。

準(zhǔn)備用于加密的數(shù)據(jù)庫(kù):

在本部分內(nèi)容中,您將更新 sqlnet.ora、創(chuàng)建一個(gè)加密錢夾 (ewallet.p12)、打開此錢夾并為 TDE創(chuàng)建萬(wàn)能密鑰。執(zhí)行以下操作:

1. 您需要更新 sqlnet.ora 文件以包含一個(gè) ENCRYPTED_WALLET_LOCATION 條目。打開一個(gè)終端窗口,然后輸入以下命令:

cd $ORACLE_HOME/network/admin

gedit sqlnet.ora

將以下條目添加到文件末尾:

ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/admin/test97/wallet/)))

如果不加這一項(xiàng)的話,則會(huì)提示下面錯(cuò)誤:

SQL alter system set key identified by "hurray"

2 ;

alter system set key identified by "hurray"

*

ERROR at line 1:

ORA-28368: cannot auto-create wallet

/opt/oracle/admin/test97/wallet/ 目錄是用來存放生成的錢夾的。

可以為加密錢夾選擇任何目錄,但路徑不應(yīng)指向在數(shù)據(jù)庫(kù)安裝過程中創(chuàng)建的標(biāo)準(zhǔn)模糊錢夾(cwallet.sso)。

2. 接下來,您需要打開錢夾并創(chuàng)建萬(wàn)能加密密鑰。從終端窗口中,輸入以下命令:

connect / as sysdbaalter system set key identified by "welcome1";

此命令的作用為:

l 如果指定的目錄中不存在加密錢夾,則將創(chuàng)建加密錢夾 (ewallet.p12)、打開此錢夾并創(chuàng)建/重新創(chuàng)建 TDE 的萬(wàn)能密鑰。

l 如果指定目錄中存在加密錢夾,則將打開此錢夾并創(chuàng)建/重新創(chuàng)建 TDE 的萬(wàn)能密鑰。

之后,就可以測(cè)試數(shù)據(jù)了。

下面是實(shí)驗(yàn)記錄:

alter system set key identified by "welcome1";

SQL conn dodd/dodd123

create table test (id number,credit_card_number varchar2(16) ENCRYPT NO SALT);

SQL insert into test values(1,'1231243242');

1 row created.

SQL insert into test values(2,'33245235');

SQL commit;

Commit complete.

SQL select * from test;

ID CREDIT_CARD_NUMB

---------- ----------------

1 1231243242

2 33245235

可見,數(shù)據(jù)查看是明文,因?yàn)檫@個(gè)時(shí)候,加密錢夾已經(jīng)打開,數(shù)據(jù)可以解密。

這時(shí),停止數(shù)據(jù)庫(kù),再打開:

SQL shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL SQL startup

ORACLE instance started.

Total System Global Area 524288000 bytes

Fixed Size 1979968 bytes

Variable Size 138414528 bytes

Database Buffers 377487360 bytes

Redo Buffers 6406144 bytes

Database mounted.

Database opened.

SQL select * from dodd.test;

select * from dodd.test

*

ERROR at line 1:

ORA-28365: wallet is not open

SQL select id from dodd.test;

ID

----------

1

2

可以看到,因?yàn)閿?shù)據(jù)庫(kù)重啟后,加密錢夾處于關(guān)閉狀態(tài),這時(shí)只要查詢到加密的列,會(huì)提示加密錢夾沒有打開。

如果用戶想打開錢夾,必須具有alter system權(quán)限。

下面打開wallet:

SQL conn / as sysdba

Connected.

SQL alter system set wallet open identified by "welcome1";

System altered.

SQL conn dodd/dodd123

Connected.

SQL select * from test;

ID CREDIT_CARD_NUMB

---------- ----------------

1 1231243242

2 33245235

可以看到,加密錢夾打開后,數(shù)據(jù)可以被解密。

還有一條:sys用戶的表不能被加密。

可見:Oracle TDE是在數(shù)據(jù)層面上對(duì)表里的數(shù)據(jù)加密,而且不會(huì)影響數(shù)據(jù)庫(kù)現(xiàn)有的權(quán)限控制策略。

salt實(shí)際上就是在加密過程中引入一個(gè)隨機(jī)性。簡(jiǎn)單的說,就是一般來說,同樣的明文產(chǎn)生同樣的密文,這樣就導(dǎo)致容易被解密者通過分析詞頻之類的方式(加解密我不太懂)來通過密文破解明文,如果指定salt,那么即使同樣的明文加密后的密文也是不一樣的。

no salt的話,自然就是相同的明文會(huì)產(chǎn)生相同的密文了。對(duì)于索引來說,要求no salt也就可以理解了

丟失ewallet加密錢夾的話,是不能再解密數(shù)據(jù)的。

Oracle 10gR2的 TDE 特性,對(duì)于防止機(jī)密信息的泄漏能起到事半功倍的作用!

如何利用Oracle自帶的MD5對(duì)數(shù)據(jù)進(jìn)行加密

1、DBMS_OBFUSCATION_TOOLKIT.MD5是MD5編碼的數(shù)據(jù)包函數(shù)

CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)

RETURN VARCHAR2

IS

retval varchar2(32);

BEGIN

retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING = passwd)) ;

RETURN retval;

END;

select md5('123456') from dual;

MD5('123456')

e10adc3949ba59abbe56e057f20f883e

2、DES加密

create or replace function

encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is

v_text varchar2(4000);

v_enc varchar2(4000);

raw_input RAW(128) ;

key_input RAW(128) ;

decrypted_raw RAW(2048);

begin

v_text := rpad( p_text, (trunc(length(p_text)/8)+1)*8, chr(0));

raw_input := UTL_RAW.CAST_TO_RAW(v_text);

key_input := UTL_RAW.CAST_TO_RAW(p_key);

dbms_obfuscation_toolkit.DESEncrypt(input = raw_input,key = key_input,encrypted_data =decrypted_raw);

v_enc := rawtohex(decrypted_raw);

dbms_output.put_line(v_enc);

return v_enc;

end;

DES加密:

update tb_salarysign_staff s set s.staffpwd =encrypt_des(s.staffpwd, 'test#5124*!de');

3、DES解密函數(shù)

create or replace function decrypt_des(p_text varchar2,p_key varchar2) return varchar2 is

v_text varchar2(2000);

begin

dbms_obfuscation_toolkit.DESDECRYPT(input_string = UTL_RAW.CAST_TO_varchar2(p_text),key_string =p_key, decrypted_string= v_text);

v_text := rtrim(v_text,chr(0));

dbms_output.put_line(v_text);

return v_text;

end;

DES解密:select decrypt_des(s.staffpwd, 'test#5124*!de') from tb_salarysign_staff s;

本文題目:oracle數(shù)據(jù)怎么加密,oracle數(shù)據(jù)加密入庫(kù)
網(wǎng)站鏈接:http://www.chinadenli.net/article4/heosoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)標(biāo)簽優(yōu)化商城網(wǎng)站靜態(tài)網(wǎng)站微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)