2016-08-08 93 views
-2

我需要基於數據庫中的少數表製作物化視圖,但捕獲的是,使用Jasypt對基礎表中的少數列進行加密,並且需要所有列在物化視圖中爲純文本。在Oracle中解密Jasypt加密信息

Oracle中有沒有隱式函數可以用於Jasypt解密或者圍繞編寫自己的函數來實現這個功能?

PS:使用的加密是可解密的。

+0

Jasypt的AES加密功能非常簡單,所以我會說它應該相當簡單。 –

+0

你能爲此建議語法嗎? –

+0

不,我不能,因爲我沒有使用Oracle數據庫。 –

回答

1

你可以在oracle中創建一個java存儲過程。這也很容易 - 創建像這樣的源:

create or replace and compile java source named JasyptWrapper as 
public class JasyptWrapper 
{ 
    public static String decrypt(String str) 
    { 
     String decryptedStr = ""; 
     //code to decrypt 
     return decryptedStr; 
    } 
} 

創建的存儲過程的包裝,像這樣:

FUNCTION jasypt_decrypt(p_str VARCHAR2) RETURN VARCHAR2 AS 
LANGUAGE JAVA NAME 'JasyptWrapper.decrypt(java.lang.String) return String'; 

然後,您可以編寫Java代碼來利用jasypt進行解密,但是你會有能力像任何其他PL/SQL過程一樣調用它。

您必須使用loadjava將jasypt庫加載到oracle數據庫中。您可能需要DBA的幫助才能執行其中一些操作,而且他們還可能需要使用dbms_java軟件包授予其他訪問權限。

然後使用您在物化視圖查詢中創建的函數在處理值時解密值。