當前位置:首頁 » 密碼管理 » oracle字元加密解密

oracle字元加密解密

發布時間: 2023-12-24 07:52:15

① Oracle資料庫中文件加密詳解

在Oracle資料庫系統中 用戶如果要以特權用戶身份登錄Oracle資料庫可以有兩種身份驗證的方法 即使用與操作系統集成的身份驗證或使用Oracle資料庫的密碼文件進行身份驗證 因此 管理好密碼文件 對於控制授權用戶從遠端或本機登錄Oracle資料庫系統 執行資料庫管理工作 具有重要的意義

Oracle資料庫的密碼文件存放有超級用戶INTERNAL/SYS的口令及其他特權用戶的用戶名/口令 它一般存放在ORACLE_HOMEDATABASE目錄下

創建密碼文件

在使用Oracle Instance Manager創建一資料庫實例的時侯 在ORACLE_HOMEDATABASE目錄下還自動創建了一個與之對應的密碼顫喊派文件 文件名為PWDSID ORA 其中SID代表相應的Oracle資料庫系統標識符 此密碼文件是進行初始資料庫管理工作的基矗在此之後 管理員也可以根據需要 使用工具ORAPWD EXE手工創建密碼文件 命令格式如下

C: >ORAPWDFILE=< FILENAME >PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS >

各命令參數的含義為

FILENAME 密碼文件名;

PASSWORD 設置INTERNAL/SYS帳號的口令

MAX_USERS 密碼文件中可以存放的最大用戶數 對應於允許以SYSDBA/SYSOPER許可權登錄資料庫的最大用戶數 由於在以後的維護中 若用戶數超出了此限制 則需要重建密碼文件 所以此參數可以根據需要設置得大一些

有了密碼文件之後 需要設置初始化參數REMOTE_LOGIN_PASSWORDFILE來控制密碼文件的使用狀態

設置初始化參數

在Oracle資料庫實例的初始化參數文件中 此參數控制著密碼文件的使用及其狀態 它可以有以下幾個選項

NONE 指示Oracle系統不使用密碼文件 特權用戶的登錄通過操作系統進行身份驗證

EXCLUSIVE 指示只有一個資料庫實例可以使用此密碼文件 只有在此設置下的密碼文件可以包含有除INTERNAL/SYS以外的用戶信息 即允滲咐許將系統許可權SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用戶

SHARED 指示可有多個資料庫實例可以使用此密碼文件 在此設置下只有INTERNAL/SYS帳號能被密碼文件識別 即使文件中存有其他用戶的信息 也不允許他們以SYSOPER/SYSDBA的許可權登錄 此設置為預設值

在REMOTE_LOGIN_PASSWORDFILE參數設置為EXCLUSIVE SHARED情況下 Oracle系統搜索密碼文件的次序為 在系統注冊庫中查找ORA_SID_PWFILE參數值(它為密碼文件的全路徑名);若未找到 則查找ORA_PWFILE參數值;若仍未找到 則使用預設值ORACLE_HOMEDATABASEPWDSID ORA;其中的SID代表相應的Oracle資料庫系統標識符

向密碼文件中增加 刪除用戶

當初始化參數REMOTE_LOGIN_PASSWORDFILE設置為EXCLUSIVE時 系統允許除INTERNAL/SYS以外的其他用戶以管理員身份從遠端或本機登錄到Oracle資料庫系統 執行資料庫管理工作;這些用戶名必須存在於密碼文件中 系統才能識別他們 由於不管是在創建資料庫實例時自動創建的密碼文件 還是使用工具ORAPWD EXE手工創建的密碼文件 都只包含INTERNAL/SYS用戶的信息;為此 在實際操作中 可能需要向密碼文件添加或刪除其他用戶帳號

由於僅被授予SYSOPER/SYSDBA系統許可權的用戶才存在於密碼文件中 所以當向某一用戶授予或收茄賀回SYSOPER/SYSDBA系統許可權時 他們的帳號也將相應地被加入到密碼文件或從密碼文件中刪除 由此 向密碼文件中增加或刪除某一用戶 實際上也就是對某一用戶授予或收回SYSOPER/SYSDBA系統許可權

要進行此項授權操作 需使用SYSDBA許可權(或INTERNAL帳號)連入資料庫 且初始化參數REMOTE_LOGIN_PASSWORDFILE的設置必須為EXCLUSIVE 具體操作步驟如下

創建相應的密碼文件;

設置初始化參數REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;

使用SYSDBA許可權登錄 CONNECTSYS/internal_user_passswordASSYSDBA;

啟動資料庫實例並打開資料庫;

創建相應用戶帳號 對其授權(包括SYSOPER和SYSDBA) 授予許可權 GRANTSYSDBATOuser_name;

收回許可權 REVOKESYSDBAFROMuser_name 現在這些用戶可以以管理員身份登錄資料庫系統了

使用密碼文件登錄

有了密碼文件後 用戶就可以使用密碼文件以SYSOPER/SYSDBA許可權登錄Oracle資料庫實例了 注意初始化參數REMOTE_LOGIN_PASSWORDFILE應設置為EXCLUSIVE或SHARED 任何用戶以SYSOPER/SYSDBA的許可權登錄後 將位於SYS用戶的Schema之下 以下為兩個登錄的例子

以管理員身份登錄

假設用戶scott已被授予SYSDBA許可權 則他可以使用以下命令登錄

CONNECTscott/tigerASSYSDBA

以INTERNAL身份登錄

CONNECTINTERNAL/INTERNAL_PASSWORD

保護密碼文件

查看密碼文件中的成員

可以通過查詢視圖V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統許可權的用戶的信息 表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用戶是否擁有相應的許可權 這些用戶也就是相應地存在於密碼文件中的成員

修改密碼文件的狀態

密碼文件的狀態信息存放於此文件中 當它被創建時 它的預設狀態為SHARED 可以通過改變初始化參數REMOTE_LOGIN_PASSWORDFILE的設置改變密碼文件的狀態 當啟動資料庫事例時 Oracle系統從初始化參數文件中讀取REMOTE_LOGIN_PASSWORDFILE參數的設置;當載入資料庫時 系統將此參數與口令文件的狀態進行比較 如果不同 則更新密碼文件的狀態 若計劃允許從多台客戶機上啟動資料庫實例 由於各客戶機上必須有初始化參數文件 所以應確保各客戶機上的初始化參數文件的一致性 以避免意外地改變了密碼文件的狀態 造成資料庫登陸的失敗

修改密碼文件的存儲位置

密碼文件的存放位置可以根據需要進行移動 但作此修改後 應相應修改系統注冊庫有關指向密碼文件存放位置的參數或環境變數的設置

刪除密碼文件

lishixin/Article/program/Oracle/201311/16762

② Oracle定義DES加密解密及MD5加密函數示例

(1)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;
(2)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;
(3)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;
(4)函數使用示例
DES加密:
update
tb_salarysign_staff
s
set
s.staffpwd
=encrypt_des(s.staffpwd,
'test#5&124*!de');
DES解密:select
decrypt_des(s.staffpwd,
'test#5&124*!de')
from
tb_salarysign_staff
s
MD5加密:
update
tb_salarysign_staff
s
set
s.staffpwd
=
md5(s.staffpwd);

③ 如何解密Oracle Warp加密過程

Oracle加密的原理就是先對源碼進行lz壓縮lzstr,然後對壓縮數據進行SHA-1運算得到40位的加密串shstr,然後將加密串與壓縮串拼接得到shstr+lzstr,然後對拼接後的字元串進行Oracle雙字元轉換(轉換表)。最後將轉換後的字元串進行base64編碼,最終得到wrap的加密串。

The default file extension for input_file is sql. The default nameof output_file is input_file.plb. Therefore, these commands are equivalent:
wrapiname=/mydir/myfile
wrapiname=/mydir/myfile.sql oname=/mydir/myfile.plb
Thisexample specifies a different file extension for input_file and adifferent name for output_file:
wrapiname=/mydir/myfile.src oname=/yourdir/yourfile.out

wrap 的使用步驟如下:
(1)將我們要加密的sql 語句保存到一個sql文本里。
(2)用wrap 進行處理,指定輸入的sql,即我們第一步的問題,然後指定輸出的路徑和文件名,默認擴展名是plb。
(3)執行我們第二部進過wrap 處理的sql,即plb文件,創建我們的對象.


示例1:wrap funcation
--函數
CREATE OR REPLACE FUNCTION F_DAVE (
n int
) RETURN string
IS
BEGIN
IF n = 1 THEN
RETURN 'Dave is DBA!';
ELSIF n = 2 THEN
RETURN 'Dave come from AnQing!';
ELSE
RETURN 'Dave come from HuaiNing!';
END IF;
END;
/

SYS@dave2(db2)> select F_DAVE(4) fromal;
F_DAVE(4)
--------------------------------------------------------------------------------
Dave come from HuaiNing!

BTW: 今天群里有人問我的blog的例子里為啥有安慶,因為我是安慶懷寧人。

[oracle@db2 ~]$ pwd
/home/oracle
[oracle@db2 ~]$ cat dave.sql
CREATE OR REPLACE FUNCTION F_DAVE (
n int
) RETURNstring
IS
BEGIN
IF n = 1 THEN
RETURN 'Dave is DBA!';
ELSIF n = 2 THEN
RETURN 'Dave come from AnQing!';
ELSE
RETURN 'Dave come from HuaiNing!';
END IF;
END;
/

[oracle@db2 ~]$ wrap iname=dave.sql

PL/SQL Wrapper: Release 10.2.0.1.0-Proction on Thu Aug 18 22:59:14 2011

Copyright (c) 1993, 2004, Oracle. All rights reserved.

Processing dave.sql to dave.plb
[oracle@db2 ~]$ ls
bifile.bbd dave.plb dave.sql Desktop log.bbd

[oracle@db2 ~]$ cat dave.plb
CREATE OR REPLACE FUNCTION F_DAVE wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
10d e7
xR
crtc/BRdQJjutbna/9+g0LlaSx87/znV+y926S1AeC0IRi/tjPJTyvJereDdk8mftMo8QMjV
fw0xXn0zVagAawwNVhSAiy//gJ5B
wAj75ph6EA==

/

SYS@dave2(db2)> @dave.plb

--再次調用函數,正常使用:
SYS@dave2(db2)> select F_DAVE(4) fromal;

F_DAVE(4)
--------------------------------------------------------------------------------
Dave come from HuaiNing!

--查看函數源碼,已經加過密了:
SYS@dave2(db2)> select text fromdba_source where name='F_DAVE';

TEXT
--------------------------------------------------------------------------------
FUNCTION F_DAVE wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd

TEXT
--------------------------------------------------------------------------------
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
10d e7
xR
crtc/BRdQJjutbna/9+g0LlaSx87/znV+y926S1AeC0IRi/tjPJTyvJereDdk8mftMo8QMjV

TEXT
--------------------------------------------------------------------------------
fw0xXn0zVagAawwNVhSAiy//gJ5B
wAj75ph6EA==

④ oracle 怎麼解密db2加密後的數據

通過配置本地資料庫的tns配置文件實現:
去oracle安裝目錄下oracle\proct\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用記事本打開,猜春雀里邊有遠程資料庫的tns連接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、埠和目標資料庫的實例名(SID),然後確保tns名稱(ORCL23)在整個文森碼檔中唯一,保存後打開資料庫連接工具,輸入遠程穗早資料庫上的用戶名密碼,選擇資料庫對象為你配置的連接名就可以了

⑤ 如何利用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加密的存儲過程能否解密

可以例用Oracle 自帶的Wrap工具實現,此工具在$ORACLE_HOME/BIN目錄下,具體如下 1、設置字元集環境變數 set NLS_LANG=CHINESE_CHINA.ZHS16GBK 2、創建一個存儲過程文件 在E:\下創建test.sql文件,內容如下: create or replace procere test1...

熱點內容
廣數編程p 發布:2024-11-28 20:38:37 瀏覽:665
sql2008vs2010 發布:2024-11-28 20:38:34 瀏覽:373
編譯plc程序 發布:2024-11-28 20:28:49 瀏覽:916
母嬰源碼 發布:2024-11-28 20:23:13 瀏覽:299
ftp標題下劃線怎麼添加 發布:2024-11-28 20:23:09 瀏覽:793
電腦金鏟鏟之戰伺服器已滿怎麼辦 發布:2024-11-28 20:09:58 瀏覽:618
腳本六要素 發布:2024-11-28 19:41:07 瀏覽:986
linuxoralce 發布:2024-11-28 19:39:51 瀏覽:608
4k存儲量 發布:2024-11-28 19:39:36 瀏覽:825
php動態鏈接 發布:2024-11-28 19:34:16 瀏覽:151