我需要基于我们数据库中的一些表来制作物化视图,但问题是,基础表中的几列是使用Jasypt加密的,并且所有列都必须是物化中的纯文本视图。
Oracle中是否有任何可用于Jasypt解密的隐式函数或任何围绕编写自己的函数来实现此功能的建议?
PS:使用的加密是可解密的。
答案 0 :(得分: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;
}
}
创建存储的proc包装器,如下所示:
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包授予其他访问权限。
然后使用您在物化视图查询中创建的函数在处理时解密值。