導航:首頁 > 文檔加密 > oracle數據字元串加密

oracle數據字元串加密

發布時間:2025-03-19 23:28:21

⑴ 如何利用Oracle自帶的MD5對數據進行加密

1、DBMS_OBFUSCATION_TOOLKIT.MD5是MD5編碼的數據包函數
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 al;
MD5('123456')


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#5&124*!de');
3、DES解密函數
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#5&124*!de') from tb_salarysign_staff s;

⑵ 求 Oracle MD5加密,及java程序端的處理步驟

今天剛做了個加密的程序:分享一下:
你可以這樣做:你在新建的密碼的時候 去調用下面的方法 把密碼帶進去加密 此時向資料庫中插入這個加密的欄位。 登錄的時候 輸入密碼 當然這個密碼要轉為加密的密文,這個密文去與你一開始新增加的密文進行匹配 如果匹配上啦 那麼就可以登錄進去啦。
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] b = md.digest(這里是你加密的密碼.getBytes("utf8"));

StringBuilder ret=new StringBuilder(b.length<<1);
for(int i=0;i<b.length;i++){
ret.append(Character.forDigit((b[i]>>4)&0xf,16));
ret.append(Character.forDigit(b[i]&0xf,16));
}
ret.toString();

System.out.println(ret.toString());
String result = "";
for (int i = 0; i < b.length; i++) {
String tmp = Integer.toHexString(b[i] & 0xFF);
if (tmp.length() == 1) {
result += "0" + tmp;
} else {
result += tmp;
}
}
System.out.println(new String(result));
}

⑶ 如何在oracle 10g r2中實現透明數據加密

設置加密密鑰:
Oracle 透明數據加密提供了實施加密所必需的關鍵管理基礎架構。 加密的工作原理是將明文數據以及秘密(稱作密鑰)傳遞到加密程序中。 加密程序使用提供的密鑰對明文數據進行加密,然後返回加密數據。 以往,創建和維護密鑰的任務由應用程序完成。 Oracle 透明數據加密通過為整個資料庫自動生成一個萬能密鑰解決了此問題。 在啟動 Oracle 資料庫時,管理員必須使用不同於系統口令或 DBA 口令的口令打開一個 Oracle Wallet 對象。 然後,管理員對資料庫萬能密鑰進行初始化。 萬能密鑰是自動生成的。
性能:
由於索引數據未被加密,因此加密通常會影響現有的應用程序索引。 Oracle 透明數據加密對與給定應用程序表關聯的索引值進行加密。 這意味著應用程序中的相等搜索對性能的影響很小,甚至沒有任何影響。 例如,假設應用程序 card_id存在一個索引,並且此應用程序執行以下語句:
SQL> Select cash from credit_card where card_id = '1025023590';
Oracle 資料庫將使用現有的應用程序索引,盡管 card_id信息已經在資料庫中加密。
准備用於加密的資料庫:
在本部分內容中,您將更新 sqlnet.ora、創建一個加密錢夾 (ewallet.p12)、打開此錢夾並為 TDE創建萬能密鑰。執行以下操作:
1. 您需要更新 sqlnet.ora 文件以包含一個 ENCRYPTED_WALLET_LOCATION 條目。打開一個終端窗口,然後輸入以下命令
cd $ORACLE_HOME/network/admin
gedit sqlnet.ora
將以下條目添加到文件末尾:
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/admin/test97/wallet/)))
如果不加這一項的話,則會提示下面錯誤:

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/ 目錄是用來存放生成的錢夾的。
可以為加密錢夾選擇任何目錄,但路徑不應指向在資料庫安裝過程中創建的標准模糊錢夾(cwallet.sso)。
2. 接下來,您需要打開錢夾並創建萬能加密密鑰。從終端窗口中,輸入以下命令:
connect / as sysdbaalter system set key identified by "welcome1";
此命令的作用為:
l 如果指定的目錄中不存在加密錢夾,則將創建加密錢夾 (ewallet.p12)、打開此錢夾並創建/重新創建 TDE 的萬能密鑰。
l 如果指定目錄中存在加密錢夾,則將打開此錢夾並創建/重新創建 TDE 的萬能密鑰。
之後,就可以測試數據了。
下面是實驗記錄:

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

可見,數據查看是明文,因為這個時候,加密錢夾已經打開,數據可以解密。
這時,停止資料庫,再打開:

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

可以看到,因為資料庫重啟後,加密錢夾處於關閉狀態,這時只要查詢到加密的列,會提示加密錢夾沒有打開。
如果用戶想打開錢夾,必須具有alter system許可權。
下面打開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

可以看到,加密錢夾打開後,數據可以被解密。
還有一條:sys用戶的表不能被加密。
可見:Oracle TDE是在數據層面上對表裡的數據加密,而且不會影響資料庫現有的許可權控制策略。
salt實際上就是在加密過程中引入一個隨機性。簡單的說,就是一般來說,同樣的明文產生同樣的密文,這樣就導致容易被解密者通過分析詞頻之類的方式(加解密我不太懂)來通過密文破解明文,如果指定salt,那麼即使同樣的明文加密後的密文也是不一樣的。
no salt的話,自然就是相同的明文會產生相同的密文了。對於索引來說,要求no salt也就可以理解了
丟失ewallet加密錢夾的話,是不能再解密數據的。
Oracle 10gR2的 TDE 特性,對於防止機密信息的泄漏能起到事半功倍的作用!

⑷ 急求Oracle資料庫中MD5解密方法!!!

MD5解密方法
我在存儲資料庫的時候,通過md5加密方法將欄位進行加密,當我在讀取該欄位時如何正確的讀取原來的值啊
------解決方案--------------------
沒辦法,MD5是不可逆的。
你需要使用可逆加密演算法
------解決方案--------------------
插入表中的時候md5加密
比如:
$sql= "insert into register(names,pswd,repswd) values( '$_POST[names] ',md5( '$_POST[pswd] '),md5( '$_POST[repswd] ')) ";
$qid=mysql_query($sql);
讀取的時候
$pswd=empty($_POST[ 'pswd '])? ' ':md5($_POST[ 'pswd ']);
------解決方案--------------------
如果業務要求可還原,那麼不要採用MD5,請使用可逆加密演算法,如DES加密。
MD5為不可逆散列演算法,可用於存儲用戶密碼,存儲後不需要永遠不需要知道明文。密碼比較時只需將用戶輸入的密碼再次轉成MD5碼與存儲的相比較即可得知用戶輸入密碼是否正確。
linux/unix操作系統一般採用MD5進行用戶密碼加密。
------解決方案--------------------
MD5目前所謂的破解只是採用碰撞法找到了對等因子。
比如:string1的MD5碼為MD1,而現在我們做到的只是又找到了一個string2,它的MD5碼也是MD1。
結果就是:用戶登陸某採用MD5加密的系統時,本來密碼是12345,現在可能用abcde也能登陸。
想想可能還原嗎?如果可以還原,那天大的信息也能用32位長的字元串表示了,這不成了超級壓縮演算法了嗎,整個宇宙的信息都可以用32位長表示了。不可逆的!

閱讀全文

與oracle數據字元串加密相關的資料

熱點內容
雙底買賣指標公式源碼無未來函數 瀏覽:685
我的世界伺服器換電腦怎麼玩 瀏覽:215
linux內核源碼內存調優 瀏覽:789
活塞壓縮機廠家 瀏覽:492
java程序員macos 瀏覽:982
js混淆加密配置 瀏覽:343
如何查詢iPhone上網伺服器 瀏覽:956
損壞的文件夾怎麼才能刪除 瀏覽:583
馬小跳pdf 瀏覽:917
如何把app庫隱藏 瀏覽:736
穿越電腦版怎麼看伺服器 瀏覽:864
php微信發紅包 瀏覽:720
聯想新買的電腦磁碟加密 瀏覽:121
飢荒存檔移到雲伺服器 瀏覽:916
嬰兒pdf 瀏覽:767
釘釘網路加密在哪裡設置 瀏覽:727
如何把安卓系統裝到sd卡 瀏覽:735
python字典獲取值方法 瀏覽:244
android手機安裝失敗 瀏覽:28
雲計算沒有伺服器 瀏覽:67