2016-08-08 63 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软件包授予其他访问权限。

然后使用您在物化视图查询中创建的函数在处理值时解密值。